2014-12-07 3 views
0

Ссылка: ListViewMyExampleпользовательских ListView подп флажок [HashMap <String, булево>]

Так что я по ссылке учебник выше, чтобы добавить подэлемент с помощью:

static final ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();

добавить Строка для подпункта.

Теперь я хотел бы добавить булев флажок существующей строки, я использую

static final ArrayList<HashMap<String,Boolean>> DAMN=new ArrayList<HashMap<String,Boolean>>();

Пример из моей частной ничтожной ListViewItem():

private void listViewItem(){ 
    HashMap<String,String> hash=new HashMap<String, String>(); 
    hash.put("Student_name","Joshua"); 
    hash.put("Student_ID","111111464"); 
    list.add(hash); 
    HashMap<String,Boolean>boo=new HashMap<String,Boolean>(); 
    boo.put("attend",true); 
    DAMN.add(boo);' 

На my onCreate, я включаю как SimpleAdapter для адаптера (String, String), так и (String, Boolean)

SimpleAdapter adapter=new SimpleAdapter( this,OMG,R.layout.tolist_row, new String[]{"Student_name","Student_ID"}, new int[] {R.id.StudenName,R.id.studentID}); SimpleAdapter adapter1=new SimpleAdapter(this,DAMN,R.layout.tolist_row1, new String[] {"attend"}, new int[] {R.id.attend});

listViewItem(); 
    setListAdapter(adapter); 
    setListAdapter(adapter1); 

Проблема, которую я могу получить только моя галочку или бесконтрольно, но не идентификатор и имя. Если я не комментирую //setListAdapter(adapter1) только я могу получить свое Student_name и Student_name, но без галочки. Как мне получить результат?

+0

Для этого вам нужен пользовательский адаптер и пользовательская логика. Создайте свой собственный адаптер списка и в его методе getView сделайте то, что вам нужно, основываясь на вашей логике. Проверьте Google на примерах наличия адаптера пользовательского списка. – Nazgul

+0

Как объединить мои «Hashmap для » и «Hashmap » для моего флажка вместе? Является ли это возможным ? @ Nazgul – Joshua

+0

Да, если вы используете пользовательский адаптер. Обычный адаптер имеет только один источник данных, как правило, список или карту. Вы можете иметь оба HashMaps в своем адаптере и предполагая, что вы используете одинаковые ключи для обоих вы можете извлечь из них значения Boolean и String в методе getView вашего пользовательского адаптера. – Nazgul

ответ

-1

Я не могу дать вам весь код, но для начала, сделать что-то вроде этого:

Сначала создайте DataHolder для ваших данных, то есть: Строки и Booeleans и т.д. идея, если использовать составной пользовательский объект в качестве владельца данных вместо из сырых строк и булевых.

public class DataHolder{ 
    private String studentNname; 
    private Boolean attended; 

    //add getters and setters etc. 

} 

Теперь реализуйте свой адаптер следующим образом.

public class MyCustomAdapter extends BaseAdapter{ 

    //populate this data using constructor or a setter or any other way 
    private List<DataHolder> data; 

    private LayoutInflater inflater = .... 
    //get the inflater form the fragment or the activity which ever you are using; 


    //implement overridden and abstract methods 
    //for counts of items return the size of HashMap 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent){ 
     if (convertView == null){ 
      convertView = inflater.inflate(R.layout.<your list item layout xml file>, null); 
     } 
     DataHolder dataHolder = this.getItem(position); 
     //now you have the convertView (your list item view) 
     //and the data to be show in that view (dataHolder object) 
     //populate the convertView with the data from the dataHolder 

     return convertView; 
    } 

} 

Наконец создать экземпляр этого адаптера, обеспечивает ему данные: то есть список и передать этот экземпляр setAdapter из ListView.

+0

Помогло ли downvoter сказать, почему здесь -1? Этот подход является очень масштабируемым и практическим подходом. – Nazgul

Смежные вопросы