2011-10-04 65 views
0

我已經使用layoutinflator創建了listview。 Listview包含每行的複選框和textview。我在列表視圖中顯示項目,默認選中複選框。我可以檢查\取消選中這些項目。需要查找是否選中了listview中的複選框

現在在相同的佈局,我有一個按鈕,並在此按鈕的clickevent下,我想檢查哪些項目有複選框在選中狀態,哪些沒有。

任何人都可以有任何想法如何檢查?

我氣筒代碼:

public View getView(int position, View convertView, ViewGroup parent) { 
    View view = convertView; 

    try { 
     mydbadapter.open(); 
     if (view == null) { 
      LayoutInflater vi = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      view = vi.inflate(R.layout.syncissue_row, null); 
     } 
     issue = (TextView) view.findViewById(R.id.issuedescription); 
     checkbox = (CheckBox) view.findViewById(R.id.issueCheckBox); 
     issue.setText(arrlstFaults.get(position)); 
     checkbox.setChecked(true); 
    } catch (SQLException e) { 
     mydbadapter.close(); 
     e.printStackTrace(); 
    } finally { 
     mydbadapter.close(); 
    } 
    return view; 
} 
+0

看這裏http://stackoverflow.com/questions/2406937/android-save-checkbox-state-in-listview-with-cursor-adapter – milind

回答

1

我的答案是沒有標準的,但你可以去,如果你沒有找到任何其他選擇。 您可以更新您的getView()方法,如下圖所示。

public View getView(int position, View convertView, ViewGroup parent) { 
    View view = convertView; 

    try { 
     mydbadapter.open(); 
     if (view == null) { 
      LayoutInflater vi = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      view = vi.inflate(R.layout.syncissue_row, null); 
     } 
     issue = (TextView) view.findViewById(R.id.issuedescription); 
     checkbox = (CheckBox) view.findViewById(R.id.issueCheckBox); 
     issue.setText(arrlstFaults.get(position)); 
     // add bellow line 
     checkbox.setOnCheckedChangeListener(new MyCheckedChangeListener(position)); 
     checkbox.setChecked(true); 
    } catch (SQLException e) { 
     mydbadapter.close(); 
     e.printStackTrace(); 
    } finally { 
     mydbadapter.close(); 
    } 
    return view; 
} 

並且您可以編寫偵聽器來更改檢查事件。有點像波紋管。您可以維護一個Hashtable來存儲檢查狀態,如下圖所示。

Hashtable ht = new Hashtable<Integer, Boolean>(); 

class MyCheckedChangeListener implements OnCheckedChangeListener 
{ 
    int position = -1; 
    myCheckedChangeListener(int position){ 
     this.position = position; 
    } 

    @Override 
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) { 

    ht.put(position, isChecked); 
} 

} 

我希望它會爲你工作。