[英]Use same RecyclerViewAdapter for 2 RecyclerView's
i'm having some issues on implementing 2 RecyclerView's
to the same RecyclerViewAdapter
actually in my main.class
i have 2 RecyclerView's
one work's properly and it's made of buttons that contain some strings and i have also another RecyclerView
where i would be able to put the string data from the buttons onClick
but i can't get how can i implement another RecyclerView
to RecyclerViewAdapter
i have yet the onClick
method on buttons so i have just to get data from them and put them to the new RecyclerView
but i don't know how to do it. 我在main.class
实际上将2个RecyclerView's
实现为同一RecyclerViewAdapter
遇到了一些问题,我有2个RecyclerView's
一个工作正常,它由包含一些字符串的按钮组成,我还有另一个RecyclerView
,可以在其中放置来自按钮 onClick
字符串数据,但是我不知道如何将另一个RecyclerView
实施到RecyclerViewAdapter
但按钮上仍然有onClick
方法,因此我只需要从按钮中获取数据并将它们放到新的RecyclerView
但我不知道怎么做。
Any suggestion on how can i do? 关于我该怎么办的任何建议?
Here is the screenshot of my layout with two recyclerView's
这是我的布局的屏幕截图,其中包含两个recyclerView's
While here is the code from the RecyclerViewAdapter
the second recyclerView
to implement is called recyclerlist_item.xml and it contain 3 TextView's called "Desc,Qta,Imp" 这是来自RecyclerViewAdapter
的代码,要实现的第二个recyclerView
称为recyclerlist_item.xml,它包含3个TextView,称为“ Desc,Qta,Imp”
public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {
private ArrayList<Item> mArrayList;
private OnItemClickListener mListener;
public interface OnItemClickListener{
void onItemClick(int position);
}
public void setOnItemClickListener(OnItemClickListener listener){
mListener = listener;
}
public static class ViewHolder extends RecyclerView.ViewHolder{
public TextView mTextView;
public ViewHolder(View itemView, final OnItemClickListener listener) {
super(itemView);
mTextView = itemView.findViewById(R.id.ButtonName);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(listener != null){
int position = getAdapterPosition();
if(position != RecyclerView.NO_POSITION){
listener.onItemClick(position);
}
}
}
});
}
}
public static class ListHolder extends RecyclerView.ViewHolder{
public TextView desc;
public TextView qta;
public TextView imp;
public ListHolder(View listView) {
super(listView);
desc = listView.findViewById(R.id.Desc);
qta = listView.findViewById(R.id.Qta);
imp = listView.findViewById(R.id.Imp);
}
}
public Adapter(ArrayList<Item> itemList){
mArrayList = itemList;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);
ViewHolder viewHolder = new ViewHolder(v, mListener);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Item currentItem = mArrayList.get(position);
holder.mTextView.setText(currentItem.getBtnName());
}
@Override
public int getItemCount() {
return mArrayList.size();
}
}
Let me get the question straight, you want any items clicked in the bottom RecyclerView to appear in the top one? 让我直接回答这个问题,您是否希望在底部RecyclerView中单击的任何项目都出现在顶部?
If so try something like this: 如果是这样,请尝试以下操作:
List<Item> selectedItemList = new ArrayList<>();
Adapter mAdapter = new Adapter(itemArrayList);
mAdapter.setOnItemClickListener( new OnItemClickListener(){
@override
void onItemClick(int position){
Item item = itemArrayList.get(position);
if( !selectedItemList.contains(item) ){
selectedItemList.add( item );
topAdapter.notifyItemInserted(selectedItemList.size() - 1);
}
}
});
In this example topAdapter is a new adapter you need to write and back with the selectedItemList List. 在此示例中, topAdapter是一个新适配器,您需要使用selectedItemList列表进行写操作并返回。 That adapter should use your ListHolder ViewHolder. 该适配器应使用您的ListHolder ViewHolder。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.