Android:RecyclerView onclick更新另一个RecyclerView

时间:2016-03-15 06:35:47

标签: android android-recyclerview recycler-adapter

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

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

请帮帮我。以下是我的代码:

expGrpAdptr=new RecyclerAdapter(this,listDataHeader,prgmImages);
rcyGroups.setAdapter(expGrpAdptr);

RecyclerAdapter.java:

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 个答案:

答案 0 :(得分:1)

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