所以我的問題是關於在listView中註冊checkBox點擊。理想情況下,我希望沿着整個視圖的線條引起checkBox打開/關閉。我看到這個工作的唯一方法是在getView()
函數中使用庫存convertView
和setOnClickListener
,然後手動查找哪個視圖並更改了複選框。有沒有更好的辦法?看起來效率很低。在listView中註冊checkBox切換的最佳方式
0
A
回答
0
我以你描述的相同方式做了。在您將適配器的getView()
方法內膨脹的XML文檔,添加此屬性:
android:onClick="myMethod";
然後你的活動中,申報myMethod的,就像這樣:
public void myMethod(View v) {
CheckBox cb = (CheckBox) v.findViewById(R.id.targetId);
cb.setChecked(!cb.isChecked);
}
1
什麼,你也可以做的是確定自定義視圖:
checkable_row_view.xml:
<LinearLayout>
<Checkbox
android:id="@+id/checkbox/>
<TextView
android:id="@+id/textview/>
</LinearLayout>
public class CustomListviewItem extends LinearLayout implements Checkable{
private TextView text;
private Checkbox checkbox;
private MyObject myObject; //the model class of the items you're displaying
public CustomListviewItem(Context context){
super(context);
}
public CustomListviewItem(Context context, AttributeSet attrs){
super(context, attrs);
LayoutInflater inflater = LayoutInflater.from(context);
inflater.inflate(R.layout.checkable_row_view, this);
text = findViewById(...);
checkbox = findViewById(...);
}
@Override
public boolean isChecked(){
return myObject.isChecked();
}
@Override
public void setChecked(boolean checked){
myObject.setChecked(checked);
checkbox.setChecked(checked);
}
@Override
public void toggle(){
myObject.setChecked(!myObject.isChecked());
checkbox.setChecked(!checkbox.isChecked());
}
public void setText(String text){
this.text.setText(text);
}
public void setMyObject...
}
custom_item_view.xml:
<my.awesome.CustomListviewItem
width and height stuff here... />
在適配器
:
static class ViewHolder{
public CustomListviewItem customListviewItem;
}
@Override
public View getView(position, convertView, parent){
//do viewholder stuff
holder.customListviewItem.setText(theText);
holder.customListviewItem.setChecked(shouldBeChecked)
}
務必將您的列表視圖的選擇模式CHOICE_MODE_MULTIPLE和使用R.layout.custom_item_view作爲您的適配器您的項目佈局。
相關問題
- 1. 全球註冊ClientScript的最佳方式?
- 2. 在Angular中註冊事件的最佳方式
- 3. 在WPF中註冊事件的最佳方式
- 4. 在Unity3D中切換用戶界面的最佳方式
- 5. 在C#中切換表單的最佳方式是什麼?
- 6. 在pom.xml中切換元素的最佳方式
- 7. 在PHP中切換開發數據庫的最佳方式?
- 8. 以編程方式在DataGridView中切換CheckBox單元格
- 9. rmi註冊表:確保有一個運行的最佳方式?
- 10. 找出用戶是否已經註冊的最佳方式
- 11. Castle Windsor:記錄組件註冊時的最佳方式?
- 12. AS3:註冊事件監聽器的最佳方式
- 13. 通過註冊表緩存的最佳方式(C++)?
- 14. 處理用戶註冊的最佳方式
- 15. Jquery在頁面加載時啓動切換的最佳方式
- 16. 在模型之間切換的最佳方式
- 17. 在兩個片段之間切換的最佳方式
- 18. 在jQuery中切換元素風格的最佳和最快的方式?
- 19. 在Django中註冊用戶的最佳方法
- 20. 在Java網站中實現註冊的最佳方法
- 21. 爲Android創建ListView的最佳方式
- 22. 實現RESTful切換操作的最佳方式?
- 23. 實現來回切換屏幕的最佳方式
- 24. 記錄有意切換的最佳方式是什麼?
- 25. 什麼是處理頁面切換的最佳方式?
- 26. 什麼是切換布爾變量的最佳方式?
- 27. 從Vim切換到Emacs的最佳方式是什麼?
- 28. 什麼是鏈接單個CheckBox與SQL列的最佳方式
- 29. 在C#中交換兩個ListView項目的最佳方式是什麼?
- 30. 在Android 4+中重新排序項目的最佳方式ListView
這很漂亮。我正在使用片段,並且我希望複選框在列表視圖中被檢查,而不僅僅是checkBox切換。這種方法仍然適用於這種情況嗎? – cj1098
是的,如果您將'onClick'屬性設置爲填充AdapterView的佈局,那麼只要您單擊的對象連接到(使用子節點)到使用'myMethod(View v)'作爲它的onClick方法。 – NitroNbg