我有一個簡單的Strings
數組,我用ArrayAdapter
以橫向ListView
顯示。 我想要做的是:當用戶從ListView
中選擇一個項目時,使該項目不可點擊並更改該項目的背景顏色。也許就像一個「灰色」的外觀。我正在考慮創建一個自定義Adapter
並覆蓋isEnabled(int position)
方法,但我不知道如何去做這件事。任何意見,建議,或幫助將不勝感激謝謝!如何在點擊後禁用ListView項目?
回答
我一直在尋找到創建自定義適配器和重寫
isEnabled(int position)
方法,但我不知道我怎麼會去了解這一點。
這很容易做到。我建議SparseBooleanArray以跟蹤效率啓用的項目:
public class MyAdapter extends ArrayAdapter<String> {
private SparseBooleanArray enabledItems = new SparseBooleanArray();
public MyAdapter(Context context, int textViewResourceId, List<String> objects) {
super(context, textViewResourceId, objects);
}
@Override
public boolean areAllItemsEnabled() {
return false;
}
@Override
public boolean isEnabled(int position) {
return enabledItems.get(position, true);
}
public void toggleItem(int position) {
boolean state = enabledItems.get(position, true);
enabledItems.put(position, !state);
}
}
的Eclipse的自動完成功能都必須工作,但這裏有一些快速提示:
- 必須覆蓋
areAllItemsEnabled()
與isEnabled()
沿 - 我設計
toggle()
由一個onItemClickListener()
使用。如果你願意,你只需要調用adapter.toggle(position)
改變行的外觀(比默認情況下啓用和禁用更多)簡單地覆蓋
getView()
。不要忘了覆蓋這兩種情況:public View getView(int position, View convertView, ViewGroup parent) { convertView = super.getView(position, convertView, parent); if(!isEnabled(position)) { /* change to disabled appearance */ } else { /* restore default appearance */ } return convertView; }
希望幫助!
使用setEnabled(bool)
屬性:
yourlistview.setEnabled(false);
這是否會禁止整個ListView的?因爲我只需要它在ListView中禁用單擊的項目。 – chRyNaN 2013-04-08 18:21:31
@AndroidStudent Yup ... – NullPointer 2013-04-08 18:24:21
通位置適配器類,當你在列表項點擊的setSelectedIndex的
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
adapter.setSelectedIndex(position);
}
add方法適配器類
public void setSelectedIndex(int ind)
{
selectedIndex = ind;
notifyDataSetChanged();
}
現在檢查這個列表視圖,如果相同的現在的位置,然後啓用並在getView me中禁用值方法
if(selectedIndex!= -1 && position == selectedIndex)
{
holder.tv.setBackgroundColor(Color.BLACK);
}
else
{
holder.tv.setBackgroundColor(selectedColor);
}
holder.tv.setText("" + (position + 1) + " " + testList.get(position).getTestText());
及以上sam 回答也不錯 – QuokMoon 2013-04-08 18:25:33
不知道它是否會工作或沒有
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// your code
view.setBackgroundColor(Color.BLUE);
view.setEnabled(false);
}
如果每行都是一個單獨的View,但ListViews會循環使用以提高效率,所以這不會像您期望的那樣運行。 – Sam 2013-04-08 18:29:15
- 1. Android - 如何禁用第二次點擊ListView項目
- 2. 在ListView中禁用項目焦點
- 3. 滾動後無法點擊ListView項目
- 4. Listview項目滾動後只能點擊
- 5. 如何在點擊ListView項目後顯示位圖圖像
- 6. 如何點擊jsonobject/listview feed項目?
- 7. 如何讓按鈕點擊ListView項目?
- 8. itemClickListener。如何點擊listView中的項目?
- 9. Listview項目在第三個項目點擊後不可見android
- 10. 已禁用單擊ListView項目
- 11. 如何禁用長的ListView項單擊
- 12. UWP ListView項目點擊
- 13. 項目右點擊ListView WPF
- 14. 禁用ListView項目單擊然後啓用它
- 15. 如何在listview中點擊listview項目按鈕啓動相機?
- 16. 如何隱藏其ListVIew中的項目後點擊NavigationDrawer?
- 17. 點擊listview中的項目後如何關注google標記?
- 18. 禁用listview點擊或觸摸滾動項目android
- 19. 如何在點擊後禁用按鈕
- 20. 如何在用戶點擊listView項目時膨脹視圖?
- 21. ListView項目點擊Metro應用程序?
- 22. android-在ListView中處理項目點擊
- 23. 在ListFragment中的ListView點擊項目
- 24. 在ListView中解釋項目點擊
- 25. ListView項目點擊不工作在Tabhost
- 26. 如何在用戶點擊後禁用可點擊元素?
- 27. 禁用用戶單擊的特定項目的ListView的點擊事件
- 28. 在點擊後禁用div
- 29. 如何在Android中單擊ListView項目
- 30. 如何在點擊時在ListView中動畫項目?
自定義列表適配器的聲音正是你需要的 – brendosthoughts 2013-04-08 18:10:09