![](/img/trans.png)
[英]Android custom listview - change background and text color of selected item is not working?
[英]Change text color of selected item of Listview in Android
我正在創建一個有一個Listview
的應用程序。 當我選擇此Listview
,將出現一個“ Alert dialog
。
在此“警報”對話框中,還存在一個Listview
。 此Listview中的項目取決於用戶輸入。
現在,當我在此列表視圖中選擇項目時,必須更改文本顏色,而當我再次選擇此項目時,則必須將文本顏色更改為其原始顏色。
應該做什么?
將地圖添加到您的班級,以跟蹤您選擇的項目:
HashMap <Integer, Boolean> selectionStates = new HashMap <String, Boolean>();
為您的ListView使用自定義適配器。 在getView中,根據地圖中的值設置顏色:
if (selectionStates.contains(position) && selectionStates.get(position){
yourTextView.setTextColor(selectedColor);
}
else {
yourTextView.setTextColor(normalColor);
}
將onItemClickListener添加到您的ListView中,例如在onCreate中:
yourListView.setOnItemClickListener(){
public void onItemClick (AdapterView<?> parent, View view, int position, long id){
boolean alreadySelected = false;
if (selectionStates.contains(position) && selectionStates.get(position) alreadySelected = true;
selectionStates.put(position, !alreadySelected);
TextView yourTextView = (TextView) view.findViewById(R.id.yourItemTextView);
if (selectionStates.contains(position) && selectionStates.get(position){
yourTextView.setTextColor(selectedColor);
}
else {
yourTextView.setTextColor(normalColor);
}
}
};
這不僅會在選擇項目后立即更改其顏色,而且還會在滾動后保留該顏色。
作為適配器,您可以擴展ArrayAdapter:
yourListView.setAdapter(new ArrayAdapter<WhatEverClass>(ArgumentsHere){
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
TextView yourTextView = (TextView) view.findViewById(R.id.yourItemTextView);
if (selectionStates.contains(position) && selectionStates.get(position){
yourTextView.setTextColor(selectedColor);
}
else {
yourTextView.setTextColor(normalColor);
}
}
});
請注意,我沒有測試此代碼,但是它至少應該使您了解代碼的外觀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.