我有一個FrameLayout裏活動(未列出的活動)的內部列表視圖。Android的ListView的多選框
我可以用3210
如何確定點擊了哪個複選框聽點擊?我沒有得到任何索引。
PS OnListItemClicked
超出範圍,因爲我沒有使用ListActivity
我有一個FrameLayout裏活動(未列出的活動)的內部列表視圖。Android的ListView的多選框
我可以用3210
如何確定點擊了哪個複選框聽點擊?我沒有得到任何索引。
PS OnListItemClicked
超出範圍,因爲我沒有使用ListActivity
您可以實現onListItemClickListener()。迭代所有的listview項目並檢查每個項目(每個項目子視圖)。
for(int i = 0; i <= listView.getLastVisiblePosition(); i++)
{
if(listView.getChildAt(i)!= null)
{
if(((CheckBox)listView.getChildAt(i).findViewById(R.id.checkbox)).isChecked())
{
//do something
}else { //do something else}
}
}
,或者你可以在getView()
方法來檢查,如果該項目複選框被選中與否。
ListView控件仍然有setOnListItemClickedListener()方法,你可以創建你的聽衆作爲一個對象,並在傳遞,而不是實現它在你的活動範圍內。
編輯:是的是的話,它就會從適配器視圖繼承。
轉到ListView docs向下滾動到Inherited methods部分並單擊AdapterView左邊的箭頭,您會看到setOnItemClickListener()。在我確信它在那裏之前,我已經在代碼中使用了它。
它沒有 – Taranfx
嘗試使用listView1.getCheckedItemPosition()
。您也可以嘗試這樣做:
private int checkedItemPosition;
listView1.setOnItemClickListener(new ListView.OnItemClickListener()
{
public void onItemClick(AdapterView<?> listView, View selectedItem, int position, long itemId)
{
CheckBox checkbox = (CheckBox)selectedItem.findViewById(R.id.checkbox);
if (checkbox.isChecked())
{
checkedItemPosition = position;
}
}
});
做這樣的事情
Vector vect = new Vector();
lv1.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_multiple_choice, item));
lv1.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
lv1.setClickable(true);
lv1.setScrollingCacheEnabled(true);
lv1.setOnItemClickListener(deleteclicklistener);
private OnItemClickListener deleteclicklistener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View v, int position,
long id) {
if(vect.contains(position))
{
vect.removeElement(position);
}else
{
vect.addElement(position);
}
}
};
我想這應該解決您的問題
訂單項應單獨點擊。將clickable設置爲True會使複選框+訂單項可點擊一下。 – Taranfx
哇那是一個骯髒的方式。我正在尋找更乾淨的東西。 – Taranfx
如果(((複選框)listView.getChildAt(ⅰ).findViewById(R.id.checkbox))器isChecked()。) 可以簡化這 查看parentView = listView.getChildAt(ⅰ); CheckBox chkbox =(CheckBox)parentView.findViewById(R.id.checkbox); 如果(chkbox.isChecked()) –
我的意思是我不想遍歷所有的孩子,應該有更好的方式來做到這一點。 – Taranfx