gpt4 book ai didi

java - RecyclerView 适配器突出显示单击的或当前的项目

转载 作者:行者123 更新时间:2023-12-01 21:58:06 25 4
gpt4 key购买 nike

由于我是 Android 新手,我很难突出显示单击的 Recyclerview 或当前项目。我尝试了一些解决方法,但没有任何帮助。基本上我想突出显示所选项目,即使它从相应的 fragment 返回后也是如此。请检查我的代码并帮助我完成。谢谢。

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);
}
}
}

最佳答案

您需要添加isSelected声明您的列表项数据模型并更改它 onClick .

当您知道状态时,您可以更改 ViewHolder 中的背景

 if (isSelected) {
// set selected background here
} else {
// set not selected background here
}

您应该创建一个模型为 ArrayList<DataModel> 的列表,而不是在适配器中保留两个列表。与此类似:

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

您也不应该将两个列表传递给其他 fragment ,而应仅获取您需要的内容,例如 yourList.get(position);

关于java - RecyclerView 适配器突出显示单击的或当前的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58725381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com