2016-02-04 258 views
1

每當用戶按下列表視圖時,它都會將其背景顏色更改爲紅色。但是,當我按另一個項目時,舊項目仍保留紅色的背景顏色。如何對其進行編輯,使只有點擊的項目具有更改的背景顏色。如何更改Android Studio中ListView中單擊項目的背景顏色?

lvContact.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long arg3) { 
     view.setSelected(true); 
     view.setBackgroundColor(Color.RED); 

     nameSelected = contactHolderArrayList.get(position).name; 
     phoneSelected = contactHolderArrayList.get(position).phone; 

     //Anything 
    } 
}); 
+0

參見此http://計算器.com/questions/16976431/change-background-color-of-selected-item-on-a-listview和http://stackoverflow.com/questions/16189651/android-listview-selected-item-stay-highlighted – Rohit5k2

+0

你需要將適配器中的其他視圖設置爲其原始背景顏色,同時將選定的一個設置爲紅色,但由於每次點擊都需要操作多個列表項,因此您可能需要令狀e您自己的自定義Base Adapter來管理您的視圖。 – NoChinDeluxe

回答

-1

您需要在視圖的ListView適配器內申請onTouchListener則需要設置Down操作,舊色後續行動的新顏色

public View getView(int position, View convertView, ViewGroup parent) 
{ 
     view.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       if(event.getAction() == MotionEvent.ACTION_DOWN){ 
        // apply new color 
       } 
       if(event.getAction() == MotionEvent.ACTION_UP){ 
        // apply old color 
       } 
       return false; 
      } 
     }); 
     return view; 
} 
0

我只是實現了一個簡單的計數器來跟蹤前頁和當前位置,它的工作原理!如有任何錯誤,請評論。我在OnCreate中初始化計數器爲0,並遞增每時間列表項被按下,然後包含以下代碼中onitemclicklistener

lvContact.setOnItemClickListener(新AdapterView.OnItemClickListener(){

 @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long arg3) { 
      //view.setSelected(true); 

      if(counter==0) { 
       prevPosition = position; 
      } 
      else if (counter ==1) { 
       currentPosition = position; 
      } 
      else { 
       prevPosition = currentPosition; 
       currentPosition = position; 
      } 
      lvContact.getChildAt(prevPosition).setBackgroundColor(Color.TRANSPARENT); 
      view.setBackgroundColor(Color.RED); 
      counter++; 
相關問題