2014-01-28 25 views
1

我的問題很簡單:如何使用長按讓用戶從ListView中選擇項目?到目前爲止,我只知道如何檢測「短」點擊並採取適當的行動。長按一下開始選擇ListView中的項目?

此外,我想在選定的項目上顯示覆選標記。如何做到這一點?

回答

1

簡單:OnLongClickListener

然後,你需要手動記住選擇與否。您需要從更改中通知列表,並在適配器的getView方法中執行一些操作。

使用上下文ActionBar模式一次與所有項目交互將是一個很好的做法,請參閱here

+0

我說的不是簡單地顯示上下文菜單,而在我的佈局,如果選擇在大宗 –

2

它的工作方式與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); 
+0

項目如果我保留一個複選框,可見性爲'GONE',並長時間顯示它,它會工作嗎? –

+0

您需要在適配器上調用notifyDataSetChanged,然後將爲每個可見行調用getView方法,然後您可以儘可能地顯示覆選框,更改背景顏色等。 –

+0

當然,只需聲明'onLongClickListener'在你的覆蓋'getView()'方法中。該方法的第二個參數(通常稱爲「convertView」)是(非常模糊地)每行的佈局。你可以通過使用'convertView.findViewById(R.id.my_checkbox)'獲得'CheckBox'的視圖,然後你可以做任何你想做的事,設置其可見性VISIBLE,GONE ... – nKn