[英]How to change image of imageView from drawable inside an adapter of RecyclerView after an item has been clicked?
[英]How to disable ListView item after it has been clicked?
我有一個簡單的Strings
數組,我在一個帶有ArrayAdapter
的水平ListView
顯示。 我要做的是:當用戶從ListView
選擇一個項目時,使該項目不可點擊並更改該項目的背景顏色。 也許就像一個“灰暗”的外觀。 我正在研究創建一個自定義Adapter
並覆蓋isEnabled(int position)
方法,但我不知道如何去做。 任何建議,建議或幫助將不勝感激!
我正在研究創建一個自定義適配器並覆蓋
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的AutoComplete功能必須完成,但這里有一些快速說明:
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; }
希望有所幫助!
單擊列表項時將位置傳遞給適配器類
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
adapter.setSelectedIndex(position);
}
將setSelectedIndex的方法添加到適配器類
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());
使用setEnabled(bool)
屬性:
yourlistview.setEnabled(false);
不確定它是否會起作用
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// your code
view.setBackgroundColor(Color.BLUE);
view.setEnabled(false);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.