2015-04-17 67 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

相关问题