0
我在失敗之前很短暫,儘管我相信我的問題的解決方案並不困難。 我有一個ListView
這是去串/ 的ArrayList
。該視圖中的每行包含兩個textview
和一個Checkbox
。複選框狀態應該考慮這個項目是否會被觀察。對於listView代碼,你可以檢查我的previous question:對Checkbox的反應點擊Cutsom ListView
特定的行是在我的CustomSettingsAdapter中創建的,它擴展了BaseAdapter。因此它包含一個SettingItems的ArrayList。
private static ArrayList<SettingItem> settingsArrayList;
private LayoutInflater mInflater;
public CustomSettingsAdapter(Context context, ArrayList<SettingItem> sitems)
{
settingsArrayList = sitems;
mInflater = LayoutInflater.from(context);
}
public int getCount()
{
return settingsArrayList.size();
}
public Object getItem(int position)
{
return settingsArrayList.get(position);
}
public ArrayList<SettingItem> getItemList()
{
return settingsArrayList;
}
public long getItemId(int position)
{
return position;
}
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null)
{
convertView = mInflater.inflate(R.layout.settings_item, null);
holder = new ViewHolder();
holder.txtName = (TextView) convertView.findViewById(R.id.setting_name);
holder.details = (TextView) convertView.findViewById(R.id.setting_detail);
holder.cb = (CheckBox) convertView.findViewById(R.id.check);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
holder.txtName.setText(settingsArrayList.get(position).getName());
holder.details.setText(settingsArrayList.get(position).getPath());
holder.cb.setChecked(settingsArrayList.get(position).getState());
holder.cb.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
}
});
return convertView;
我的想法是剛剛更改適配器ArrayList中,然後給它的活動,它可以與原來的名單,這以後即可正常進行序列匹配。但我不明白它是如何工作的,以及我在網上發現的知識和事情。 非常感謝您提前幫助我! 問候託比
編輯:onCheckedChangeListener:
holder.cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
settingsArrayList.get(position).setState(isChecked);
notifyDataSetChanged();
}
});
試了一下還與cd.setID和接收到的實際位置與cb.getID ArrayList的,但它有同樣的問題返回。
好吧,這給我帶來了不積跬步前進,我認爲...但它仍然沒有工作,我現在首先設置適當的實際位置的CB的ID。並且在onCheckListener中,我改變了與Checkbox ID匹配的位置的Item的狀態。然後調用notifyDataSetChanged()。我還在做什麼錯了?謝謝! – 2011-04-06 12:11:45
嘿,首先讓我確認你想在onCheckedChangedListener中做什麼動作?是隱藏相應的listitem還是將它從arraylist中刪除,以便它不顯示在ListView中? – 2011-04-07 11:55:12