我必须在我的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);
}
}
}
答案 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);