0
我正在創建一個應用程序,其中有一個Listview
。當我選擇這個Listview
的項目時,出現一個Alert dialog
。
在此警報對話框中,還有一個Listview
。此列表視圖中的項目取決於用戶輸入。
現在,當我在此列表視圖中選擇項目時,必須更改文本顏色,並且當我再次選擇此項目時,文本顏色必須更改爲其原始顏色。
應該做什麼?在Android中更改Listview中選定項目的文本顏色
我正在創建一個應用程序,其中有一個Listview
。當我選擇這個Listview
的項目時,出現一個Alert dialog
。
在此警報對話框中,還有一個Listview
。此列表視圖中的項目取決於用戶輸入。
現在,當我在此列表視圖中選擇項目時,必須更改文本顏色,並且當我再次選擇此項目時,文本顏色必須更改爲其原始顏色。
應該做什麼?在Android中更改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中,例如,在創建時:
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);
}
}
});
請注意,我沒有測試此代碼,但它至少應該給你的你的代碼應該是什麼樣子的想法。
嘿,我已經執行你的saiid。但還沒有結束。你可以在這裏檢查我的代碼嗎?並告訴我需要更換什麼? –
final HashMap selectionStates = new HashMap (); lvDialog.setOnItemClickListener(新OnItemClickListener(){ @Override 公共無效onItemClick(適配器視圖>爲arg0,查看ARG1,INT ARG2,長ARG3){ \t \t \t \t \t \t \t \t \t布爾alreadySelected = FALSE; \t \t \t \t \t \t \t \t \t \t \t \t TextView tvChange =(TextView)arg1.findViewById(R.id.txt); \t \t \t \t \t \t \t \t如果(selectionStates.containsValue(ARG2)&& selectionStates.get(ARG2)) \t \t \t \t { \t \t \t \t \t tvChange.setTextColor(顏色。青色); \t \t \t \t} \t \t \t \t \t \t \t \t別的 \t \t \t \t { \t \t \t \t \t tvChange.setTextColor(Color.RED); \t \t \t \t} \t \t \t \t \t \t \t} \t \t}); –
您使用哪種ListView適配器? –