我在RecyclerView's
实际上RecyclerViewAdapter
实施2 main.class
时遇到了一些问题,我有2 RecyclerView's
个工作正常并且它由按钮组成,其中包含一些字符串,我还有另一个RecyclerView
,我可以从按钮中输入字符串数据onClick
但是我无法获得如何实现另一个RecyclerView
到RecyclerViewAdapter
我还有按钮上的onClick
方法,所以我只需从中获取数据并把它们放到新的RecyclerView
,但我不知道该怎么做。
有关我该怎么做的任何建议?
以下是我的布局与两个recyclerView's
虽然来自RecyclerViewAdapter
的代码实现的第二个recyclerView
称为recyclerlist_item.xml,但它包含3个TextView" Desc,Qta,Imp&#34 ;
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();
}
}
答案 0 :(得分:0)
让我直截了当地问一下,你想在底部的RecyclerView中点击的任何项目出现在最顶层吗?
如果有的话尝试这样的事情:
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);
}
}
});
在此示例中, topAdapter 是您需要使用 selectedItemList 列表编写和返回的新适配器。该适配器应使用 ListHolder ViewHolder。
答案 1 :(得分:0)
您可以简单地创建同一适配器的两个对象,并将不同的RecyclerView 传递给这两个对象。下面给出一个简单的例子
output.merge(MyEnumCode.code, 1, Integer::sum); //-->outuput like EN1:3,ENS:1 (based on occurrencies)