Java RecyclerView适配器高亮显示已单击或当前项目

Java RecyclerView适配器高亮显示已单击或当前项目,java,android,android-recyclerview,Java,Android,Android Recyclerview,由于我是android的新手,我很难突出显示RecycleService点击或当前项目。我尝试了一些变通办法,但没有任何帮助。基本上,我想突出显示选定的项目,即使它是从各自的片段回来。请检查我的代码并帮助我完成。谢谢 public class ContentaAdapter extends RecyclerView.Adapter<ContentaAdapter.MyViewHolder> { Context context; ArrayList<Stri

由于我是android的新手,我很难突出显示RecycleService点击或当前项目。我尝试了一些变通办法,但没有任何帮助。基本上,我想突出显示选定的项目,即使它是从各自的片段回来。请检查我的代码并帮助我完成。谢谢

public class ContentaAdapter extends RecyclerView.Adapter<ContentaAdapter.MyViewHolder>  {

    Context context;

    ArrayList<String> ItemTitle;
    ArrayList<String> ItemSource;

    public ContentaAdapter(Context context, ArrayList<String> ItemTitle, ArrayList<String> ItemSource) {
        this.context = context;
        this.ItemTitle = ItemTitle;
        this.ItemSource = ItemSource;

    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.home_items_layout, parent, false);
        MyViewHolder vh = new MyViewHolder(v);
        return vh;
    }
    @Override
    public void onBindViewHolder(final MyViewHolder holder, final int position) {
        holder.ItemTitle.setText(ItemTitle.get(position));
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Fragment contentdisplay = new ViewContentFragment();
                Bundle bundle=new Bundle();
                bundle.putStringArrayList("ItemTitle",ItemTitle);
                bundle.putStringArrayList("ItemSource",ItemSource);
                bundle.putInt("position",position);
                bundle.putInt("ItemCounts",ItemTitle.size());
                contentdisplay.setArguments(bundle);
                ((MainActivity)context).replaceFragment(contentdisplay);
            }
        });

    }

    @Override
    public int getItemCount() {
        return ItemTitle.size();
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {
        TextView ItemTitle;
        public MyViewHolder(View itemView) {
            super(itemView);
            ItemTitle = (TextView) itemView.findViewById(R.id.item_title);
        }
    }
}
公共类ContentAAAdapter扩展了RecyclerView.Adapter{
语境;
ArrayList项目标题;
arraylistitemsource;
公共内容适配器(上下文上下文、ArrayList ItemTitle、ArrayList ItemSource){
this.context=上下文;
this.ItemTitle=ItemTitle;
this.ItemSource=ItemSource;
}
@凌驾
公共MyViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图v=LayoutInflater.from(parent.getContext()).flate(R.layout.home\u items\u布局,parent,false);
MyViewHolder vh=新的MyViewHolder(v);
返回vh;
}
@凌驾
公共无效onBindViewHolder(最终MyViewHolder,最终int位置){
holder.ItemTitle.setText(ItemTitle.get(position));
holder.itemView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
Fragment contentdisplay=新的ViewContentFragment();
Bundle=新Bundle();
bundle.putStringArrayList(“ItemTitle”,ItemTitle);
bundle.putStringArrayList(“ItemSource”,ItemSource);
bundle.putInt(“位置”,位置);
bundle.putInt(“ItemCounts”,ItemTitle.size());
setArguments(bundle);
((MainActivity)context.replaceFragment(contentdisplay);
}
});
}
@凌驾
public int getItemCount(){
返回ItemTitle.size();
}
公共类MyViewHolder扩展了RecyclerView.ViewHolder{
文本视图项目标题;
公共MyViewHolder(查看项目视图){
超级(项目视图);
ItemTitle=(TextView)itemView.findViewById(R.id.item\u title);
}
}
}

您需要将
isSelected
状态添加到列表项数据模型中,然后单击
将其更改

当您知道状态时,可以在
ViewHolder

 if (isSelected) {
            //  set selected background here
        } else {
            //  set not selected background here
        }
您不应该在adapter中保留两个列表,而应该创建一个与model
ArrayList
类似的列表:

class DataModel {
    String ItemTitle;
    String ItemSource;
    Boolean isSelected;
}

另外,您不应该将这两个列表都传递给其他片段,而应该只获取您需要的内容,例如
yourList.get(position)

首先,不要从适配器调用“replaceFragment”,也不要从适配器调用Android API,使用监听器(接口)将此事件(onItemClick)传递到活动中,也许您可以在此处找到一些有用的信息:或此处:谢谢您的建议。我要试试!!谢谢你的信息。你能再给我解释一下吗?看更新的答案,isSelected将是你的背景状态