2016-11-10 130 views
0

我有通知列表視圖,我想如果用戶點擊通知(特定行)它的顏色應該改變。 改變顏色意味着通知被讀取。 即使重新啓動應用程序,也應該反映已更改的顏色。如何更改列表視圖的特定行顏色

爲此,我已經在擴展陣列適配器的類中編寫代碼。

@Override 
public View getView(int position, View v, ViewGroup parent) 
{ 
    View mView = v ; 
    if(mView == null){ 
     LayoutInflater vi = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     mView = vi.inflate(id, null); 
    } 
    listView=(ListView)mView.findViewById(R.id.notiID); 
    String sd= yORn.get(position); 
    if(sd=="Y"){ 
     listView.getChildAt(position).setBackgroundColor(Color.GREEN); 
    } 

我也用調試器,我收到條件,如果循環真的,但我的問題是,我沒有得到改變的顏色爲lisview。 調試器不在if循環中移動。

有什麼想法?

+2

不使用'='操作符比較字符串。改用'equals()'。 – dit

+1

從你的getView()方法判斷,你首先需要學習如何使用ListView。請觀看這第一https://www.youtube.com/watch?v=wDBM6wVEO70 –

回答

-1
@Override 
    public View getView(int position, View v, ViewGroup parent) 
    { 
     View mView = v ; 
     ViewHolder holder = null; 
     if(mView == null){ 
      LayoutInflater vi = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      mView = vi.inflate(id, null); 
      holder.listItem = mView; 
      mView.setTag(holder); 
     }else{ 
      holder = (ViewHolder)mView.getTag(); 
     } 
     String sd= yORn.get(position); 
     if(sd.equals("Y")){ 
      holder.listItem.setBackgroundColor(Color.GREEN); 
     } 

    } 
    class ViewHolder{ 
     View listItem; 
    } 
+0

'mView.setBackgroundColor(Color.GREEN);'將永遠不會被稱爲... – Selvin

+0

@Selvin是的。你是對的..我只是編輯答案。感謝您的糾正。 –

+0

仍然錯誤 - 如果視圖被重用 - 如果不應該顯示backroung將變爲綠色 – Selvin

0

您應該使用RecyclerView而不是Listview開始。在適用於您的RecyclerView的適配器中,檢查onBindViewHolder中的位置並相應地設置該行的背景顏色。見下文。

@Override 
public void onBindViewHolder(CustomViewHolder holder, int position) { 
    if(position == 2){ 
     holder.ll_item_background.setBackgroundColor(mContext.getResources().getColor(R.color.calc_boxes)); 
    } 

    // Do your stuff here 
} 
0

在此默認爲我所提供的背景色爲紅色,並且如果用戶讀取,然後像您期望的背景顏色將變爲綠色。我編輯了你的代碼。

@Override 
    public View getView(int position, View v, ViewGroup parent) 
    { 
     View mView = v ; 
     ViewHolder holder = null; 
     if(mView == null){ 
      LayoutInflater vi = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      mView = vi.inflate(id, null); 
      holder.listItem = mView; 
      mView.setTag(holder); 
     }else{ 
      holder = (ViewHolder)mView.getTag(); 
     } 

     //By Default 
     holder.listItem.setBackgroundColor(Color.RED); 

     String sd= yORn.get(position); 
     if(sd.equals("Y")){ 
      holder.listItem.setBackgroundColor(Color.GREEN); 
     } 
     } 

    class ViewHolder{ 
     View listItem; 
    } 

希望這是有益:)

相關問題