2015-04-17 70 views
3

我認爲這將是非常容易實現的,但經過幾個小時的搜索後,我找不到有用的工具。 我想設置選中的用戶在抽屜中點擊的項目,這個列表是一個RecyclerView。在我的適配器的ViewHolder我對項目的onClick事件:設置一個物品在點擊它時選中的一個RecyclerView的狀態

@Override 
public void onClick(View v) { 
    notifyItemChanged(selectedItem); 
    selectedItem = getPosition(); 
    notifyItemChanged(selectedItem); 
} 

selectedItem屬性是一個int跟蹤選定的項目。

現在在onBindViewHolder我這樣做:

holder.itemView.setSelected(position == selectedItem); 

但似乎選擇的狀態從來沒有所謂的,因爲我有一個機器人:背景seted的項目與此內容行:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:state_selected="true" 
     android:drawable="@drawable/border_bottom_selected" 
     android:color="@color/backgroundToolbar"/> 
    <item android:drawable="@drawable/border_bottom" /> 
</selector> 

正常狀態正在工作,所以我知道背景很好地應用。

那麼,如何將選定狀態設置爲RecyclerView中的項目?

回答

0

那麼,挖掘一點點,試圖理解Android的方式來實現從XML的樣式,我發現在特定的TextView中改變文字顏色(我沒有告訴我的問題)你必須設置該屬性android:color="@drawable/bg_item"(bg_item是包含選擇,並在每個項目的屬性Android的文件:色),這樣的事情:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:state_selected="true" 
     android:drawable="@drawable/border_bottom_selected" 
     android:color="@color/backgroundToolbar" /> 
    <item android:drawable="@drawable/border_bottom" 
     android:color="@color/colorTextTitleTab"/> 
</selector> 
2

從視圖持有者中刪除onclick監聽器。

在onBindViewHolder做到這一點:

viewHolder.itemView.setOnClickListener(new OnClickListener() 
    { 

     @Override 
     public void onClick(View v) 
     { 
      // TODO Auto-generated method stub 
      notifyItemChanged(selectedItem); 
      selectedItem = position; 
      notifyItemChanged(selectedItem); 
     } 
    }); 
    holder.itemView.setSelected(position == selectedItem); 

我希望這可以解決您的問題。

+0

沒什麼,該項目選中狀態沒有顯示任何。 – xmarston

相關問題