2012-03-15 33 views
1

我有一個列表視圖由20個項目組成,使用android.R.layout.simple_list_item_multiple_choice作爲textview佈局,它使用CheckedTextView。我想選擇時要檢查的複選框,以實現:ListView啓用checkedTextView異常

public void onListItemClick(ListView parent, final View v, int pos, long id) { 
    ((CheckedTextView) v).setChecked(true); 
} 

然而,當我做到這一點,不僅是被檢查的特定checkedtextview,但還要檢查其他幾個人。

回答

0

嘗試這個 -

((CheckedTextView)parent.getChildAt(pos)).setChecked(true); 
+0

之前嘗試過,但不知怎的,它顯示奇怪的行爲。即使在整個列表中有20個項目,getChildCount()返回9.所以,當我點擊第10或任何更大的項目,有一個空指針異常 – Arjun 2012-03-15 15:11:31

0

,你可以通過創建自定義適配器來實現這一點。所有你需要做的是 創建一個擴展BaseAdapter類的新類。

對於這個與你使用,你需要修改 getView method.below佈局工作是片斷

公共查看getView(INT位置,查看convertView,ViewGroup以及母公司) { ViewHolder架;

if (convertView == null) 
{ 
    convertView = mInflater.inflate(android.R.layout.simple_list_item_multiple_choice, null); 

    holder = new ViewHolder(); 
    holder.checkbox = (CheckedTextView) convertView.findViewById(android.R.id.text1); 

    convertView.setTag(holder); 
} 
else 
{ 
    holder = (ViewHolder) convertView.getTag(); 
} 

    holder.checkbox.setText(tasks.get(position).getName()); 
    holder.checkbox.setChecked(tasks.get(position).isCompleted()); 

    return convertView; 

} 

static class ViewHolder { 
    CheckedTextView checkbox; 

} 

希望這對你有所幫助。

+0

謝謝,我幾乎是一個初學者,所以我需要去通過自定義適配器。希望這可以工作。儘管如此,任何理由爲什麼多個複選框被選中時,只有他們中的一個被點擊。 – Arjun 2012-03-15 15:08:01

+0

這很好用,但只有在需要重新創建視圖時纔會調用getView(當該特定行被滾出並返回時)。我想要的是當我點擊一個列表項時,它會在那裏被檢查。 – Arjun 2012-03-22 14:21:12