我的問題很簡單:如何使用長按讓用戶從ListView
中選擇項目?到目前爲止,我只知道如何檢測「短」點擊並採取適當的行動。長按一下開始選擇ListView中的項目?
此外,我想在選定的項目上顯示覆選標記。如何做到這一點?
我的問題很簡單:如何使用長按讓用戶從ListView
中選擇項目?到目前爲止,我只知道如何檢測「短」點擊並採取適當的行動。長按一下開始選擇ListView中的項目?
此外,我想在選定的項目上顯示覆選標記。如何做到這一點?
然後,你需要手動記住選擇與否。您需要從更改中通知列表,並在適配器的getView方法中執行一些操作。
使用上下文ActionBar模式一次與所有項目交互將是一個很好的做法,請參閱here。
回答https://stackoverflow.com/questions/12090394/i-cant-get-longclick-to-work-on-listactivity:
// Optional, added if done from ListActivity (or possibly ListFragment)
ListView lv = getListView();
// Set on this if overriding OnItemLongClickListener, otherwise use an anonymous inner function
lv.setOnItemLongClickListener(this);
它的工作方式與onClickListener
相同,只是您正在檢查onLongClickListener
。所以你有這樣的結構:
your_view.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v) {
...
}
});
如果你想顯示一個對勾,在我看來,最好的辦法就是定義自己的行佈局,在那裏你只是在右側定義CheckBox
的行的內容。通過這種方式,而不是傳遞ArrayAdapter
一些Android的佈局,你會指定新的佈局,是這樣的:
your_adapter = new ArrayAdapter(context, R.layout.your_new_layout, initial_rows);
項目如果我保留一個複選框,可見性爲'GONE',並長時間顯示它,它會工作嗎? –
您需要在適配器上調用notifyDataSetChanged,然後將爲每個可見行調用getView方法,然後您可以儘可能地顯示覆選框,更改背景顏色等。 –
當然,只需聲明'onLongClickListener'在你的覆蓋'getView()'方法中。該方法的第二個參數(通常稱爲「convertView」)是(非常模糊地)每行的佈局。你可以通過使用'convertView.findViewById(R.id.my_checkbox)'獲得'CheckBox'的視圖,然後你可以做任何你想做的事,設置其可見性VISIBLE,GONE ... – nKn
我說的不是簡單地顯示上下文菜單,而在我的佈局,如果選擇在大宗 –