当前位置: 首页 > 知识库问答 >
问题:

Android:RecycerView onclick更新另一个

高高雅
2023-03-14

我必须在我的android活动中实现2个回收器视图,其中第一个回收器视图显示类别,第二个将显示来自所选类别的项目。我已经实现了第一个回收器视图。

现在,在RecycerView中单击一个项目时,我需要突出显示该视图,还需要显示该类别下的项目。当我单击另一个视图时,第一个视图高亮应该更改为单击并显示该类别中的项目的新视图。另外,当我谈到这个活动时,第一个项目应该在第一个回收器视图中默认突出显示,相应的项目应该在第二个回收器视图中显示。如何使用视图的onclick或onTouch侦听器实现此任务?

expGrpAdptr=new RecyclerAdapter(this,listDataHeader,prgmImages);
rcyGroups.setAdapter(expGrpAdptr);
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {

List<COAAccount> listDataHeader;
int []  prgmImages;
Context context;

public RecyclerAdapter(Context activity, List<COAAccount> listDataHeader, int[] prgmImages) {
    this.listDataHeader = listDataHeader;
    this.prgmImages = prgmImages;
    context=activity;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, final int viewType) {
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.expense_group_view, parent, false);
    ViewHolder vh = new ViewHolder(v);
    v.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

        }
    });
    return vh;
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    holder.grpCoa=listDataHeader.get(position);
    holder.txtGrpName.setText(holder.grpCoa.getStrName());
    holder.rImgGrpExp.setImageResource(prgmImages[0]);
}

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

public class ViewHolder extends RecyclerView.ViewHolder {

    COAAccount grpCoa;
    TextView txtGrpName;
    ImageView rImgGrpExp;
    ImageButton imgGrpEdit;
    boolean checkedItem;

    public ViewHolder(View itemView) {
        super(itemView);

        txtGrpName=(TextView) itemView.findViewById(R.id.txtGrpName);
        rImgGrpExp=(ImageView) itemView.findViewById(R.id.rImgGrpExp);
        imgGrpEdit=(ImageButton) itemView.findViewById(R.id.imgGrpEdit);

    }
}

共有1个答案

容寒
2023-03-14
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {

    List<COAAccount> listDataHeader;
    int []  prgmImages;
    Context context;

    private final OnCOAAccountClickListener onCOAAccountClickListener;

    public interface OnCOAAccountClickListener {
        void onClicked(COAAccount account);
    }

    public RecyclerAdapter(Context activity, List<COAAccount> listDataHeader, int[] prgmImages, OnCOAAccountClickListener onCOAAccountClickListener) {
        this.listDataHeader = listDataHeader;
        this.prgmImages = prgmImages;
        context=activity;
        this.onCOAAccountClickListener = onCOAAccountClickListener;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, final int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.expense_group_view, parent, false);
        ViewHolder vh = new ViewHolder(v);
        return vh;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.grpCoa=listDataHeader.get(position);
        holder.txtGrpName.setText(holder.grpCoa.getStrName());
        holder.rImgGrpExp.setImageResource(prgmImages[0]);

        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                onCOAAccountClickListener.onClicked(listDataHeader.get(position));
            }
        });
    }

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

    public class ViewHolder extends RecyclerView.ViewHolder {

        COAAccount grpCoa;
        TextView txtGrpName;
        ImageView rImgGrpExp;
        ImageButton imgGrpEdit;
        boolean checkedItem;

        public ViewHolder(View itemView) {
            super(itemView);

            txtGrpName=(TextView) itemView.findViewById(R.id.txtGrpName);
            rImgGrpExp=(ImageView) itemView.findViewById(R.id.rImgGrpExp);
            imgGrpEdit=(ImageButton) itemView.findViewById(R.id.imgGrpEdit);

        }
    }
}

在您的活动代码中:

expGrpAdptr=new RecyclerAdapter(this,listDataHeader,prgmImages, new OnCOAAccountClickListener() {
    @Override
    public void onClicked(COAAccount account) {
        // TODO : Update your another adapter of another recyclerview.
    }
});
rcyGroups.setAdapter(expGrpAdptr);
 类似资料:
  • 问题内容: 我是java的新手,我被困在这里…我要做的是将一个java文件中arraylist的更改更新为另一个文件中的JPanel。我正在对arraylist进行排序,因此无法手动完成。有什么办法可以让我“告诉” JPanel痛楚吗? 我有进行排序(工作)的BubbleSort.java,有包含JPanel和JFrame类(用于显示未排序的直方图的工作)的Animation.java。 这是家庭

  • 问题内容: 我有一条语句需要写(用通用名称表示,因为这是为了工作)来更新表“ tUpd”中的列“ updCol”。tUpd还具有一个列“ linkCol”,该列存在于另一个表tOther中。tOther还有另一列“ idCol”。 我的问题是更新tUpd中行的updCol值,该值通过linkCol对应于具有给定idCol值的行。 我认为应该起作用的一种解决方案是: 但是,我担心这种方法会导致性能下

  • 问题内容: 亲爱的大家,我遇到了挥杆相关的问题。由于违反公司政策,我无法共享代码,因此我将尽力解释该问题。 简而言之,我创建了一个扩展包含JLabel的JWindow的类。JLabel的文本是通过计时器对象随机更新的,该计时器对象使用scheduleAtFixedRate方法每50毫秒实例化一个TimerTask。JLabel中的值是通过在一个单独的线程(称为传输线程)中调用一个方法来检索的,该线

  • 我想做一个应用程序,当我按下AddTask类中的save按钮时,文本输入中的文本将直接更新到Details类中的标签,但我所做的在那里不起作用…有谁能帮我一下吗?

  • 我已经创建了一个多边形表(多边形),其中包含名称和点(使用多边形值) 我有另一个表(latlon ),它有lat和lot列,包含超过一百万条记录 我必须在“多边形”表中的点的帮助下更新纬度表中的列(区域名称) 以下 select 语句为一条记录提供正确的输出。 有人能帮我在POSTGIS中编写一个UPDATE查询来获取更多的lat,lon值吗?

  • 我正在使用齐柏林飞艇0.6.2和火花2.0。 我尝试在循环中执行查询,但效果不是很好。 我需要循环一个数据帧的每一行,大约5000行,并执行一个查询,这将在另一个数据帧中增加一个值。 以下是我的尝试: 我试着从两个数据帧中提取一小部分,但仍然很慢。我觉得我做得不对。 知道如何快速更新数据帧吗?