簡體   English   中英

在Android中更改Listview所選項目的文本顏色

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM