2013-01-03 18 views
0

因爲我的listView/List項目有複選框我有問題,當我滾動列表時,複選框被選中或取消選中。因此,我需要跟蹤ArrayList中的選中項目。所以我在每個複選框上添加了一個OnCheckedChangeListener,並且我已經從listview的自定義適配器的「getView」中添加了監聽器。Android:給列表視圖中的每個複選框,而不覆蓋其他人

現在,因爲每個checbox都對點擊作出反應,所以我有以下問題。

@Override 
public View getView(int position, View convertView, ViewGroup parent) {  
... 
cb.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      if (isChecked) { 
       if (!MainActivity.getSharedInstance().getIsCheckedArray().contains(tasks.get(MainActivity.ID))) 
        MainActivity.getSharedInstance().getIsCheckedArray().add(tasks.get(MainActivity.ID)); 
       for (String i : MainActivity.getSharedInstance().getIsCheckedArray()) { 
        Log.i("RUN", i); 
       } 
      } else { 
       if (MainActivity.getSharedInstance().getIsCheckedArray().contains(tasks.get(MainActivity.ID))) 
        MainActivity.getSharedInstance().getIsCheckedArray().remove(tasks.get(MainActivity.ID)); 
       for (String i : MainActivity.getSharedInstance().getIsCheckedArray()) { 
        Log.i("RUN", i); 
       } 
      } 
     } 
    }); 

從每個項目我有一個自己的ID,我可以與ID到達項目。但是當我點擊複選框來獲取ID時,我只能得到一個項目的ID(最後一項)。當我點擊其他複選框時,他們會對更改做出反應,但我只從最後一個項目獲取ID,而不是最後一個項目之前的項目。

當我總是創建新的偵聽器時,是否覆蓋偵聽器?

更新: 沒關係,我已將此添加到onCheckChangeListener

String curIndex = tasks.get(MainActivity.ID); 

和它的工作

回答

0

我覺得你的錯誤是,你doesn't使用LayoutInflater。剛剛嘗試:

LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View view = inflater.inflate(R.layout.yourListViewItemLayout, parent,false); 

    final Checkbox yourCheckBox = (CheckBox)view.findViewById(R.id.yourCheckBoxId); 
      yourCheckBox.setOnCheckedChangeListener...... 

這應該工作

相關問題