我有一個ListView包含每個項目上的按鈕。 我希望項目點擊會導致列表中的OnItemClick事件觸發, ,因爲該事件包含比按鈕的OnClick事件更多的信息(id,position)。fire OnItem點擊按鈕時點擊listview
這是一個重要的動作列表,這就是爲什麼我需要按鈕,不想要一個普通的項目點擊會導致它觸發(我猜使按鈕可以聚焦會做的伎倆)。
這可能嗎?
我有一個ListView包含每個項目上的按鈕。 我希望項目點擊會導致列表中的OnItemClick事件觸發, ,因爲該事件包含比按鈕的OnClick事件更多的信息(id,position)。fire OnItem點擊按鈕時點擊listview
這是一個重要的動作列表,這就是爲什麼我需要按鈕,不想要一個普通的項目點擊會導致它觸發(我猜使按鈕可以聚焦會做的伎倆)。
這可能嗎?
嘗試使你自己的適配器的列表。在getView()方法做你的必需品要求。
setListAdapter(new ArrayAdapter<string>(this, R.layout.list_item, strings) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row;
if (null == convertView) {
row = mInflater.inflate(R.layout.list_item, null);
} else {
row = convertView;
}
Button bt1 = (Button) row.findViewById(android.R.id.bt1);
bt1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v){
//you will get position and do necessary method
}
});
return row;
}
});
行可點擊嗎?根據行是否可點擊,我可能會執行以下操作之一;
你可以只設置clickable=false
上的按鈕,讓觸摸propergate到父,即列表視圖排按鈕是,然後onItemClickListener
應通知該行
您可以設置在該報告上的按鈕位於該行的位置的按鈕標籤(View.setTag(..)),並閱讀了onClickListener
這個標籤,你可以遵循freshDroid此頁面上提示問題的答案卻是會效率低下因爲您每次創建新的OnClickListener
時都會創建/回收視圖,這會導致額外的GC工作。
我這樣工作。 clickable = false按鈕但它不傳播onItemClickListener。爲你做這個方法嗎? –
工作(只要我使用最終的變種的位置)。 謝謝。 – Shlomi
你想要哪個ID?你的List項目中有哪些項目? – freshDroid
我的問題實際上比較複雜,因爲有時候我到onClick的位置是錯誤的。但這是另一個問題... – Shlomi