我创建了一个回收器视图适配器,我想知道如何使用同一适配器的多个布局?首先,布局是一个可扩展的卡片视图,我想在另一个活动中使用这个适配器,另一个布局,我需要创建另一个适配器吗,或者有任何方法可以再次使用这个适配器?这是我的适配器代码:
public class BookRecyclerViewAdapter extends RecyclerView.Adapter<BookRecyclerViewAdapter.viewHolder> {
private ArrayList<Book> books = new ArrayList<>();
private Context context;
public BookRecyclerViewAdapter(Context context) {
this.context = context;
}
@NonNull
@Override
public viewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_book, parent, false);
return new viewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull viewHolder holder, int position) {
holder.txtName.setText(books.get(position).getName());
holder.txtAuthor.setText(books.get(position).getAuthor());
holder.txtDesc.setText(books.get(position).getShortDesc());
Glide.with(context)
.asBitmap()
.load(books.get(position).getImgUrl())
.into(holder.imgBook);
holder.parent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, BookActivity.class);
intent.putExtra(BOOK_ID_KEY, books.get(position).getId());
context.startActivity(intent);
}
});
if (books.get(position).isExpanded()) {
TransitionManager.beginDelayedTransition(holder.parent);
holder.expanded.setVisibility(View.VISIBLE);
holder.downArrow.setVisibility(View.GONE);
} else {
TransitionManager.beginDelayedTransition(holder.parent);
holder.expanded.setVisibility(View.GONE);
holder.downArrow.setVisibility(View.VISIBLE);
}
}
@Override
public int getItemCount() {
return books.size();
}
public void setBooks(ArrayList<Book> books) {
this.books = books;
notifyDataSetChanged();
}
public class viewHolder extends RecyclerView.ViewHolder {
private CardView parent;
private ImageView imgBook;
private TextView txtName;
private ImageView downArrow, upArrow;
private RelativeLayout expanded, collapsed;
private TextView txtAuthor, txtDesc;
public viewHolder(@NonNull View itemView) {
super(itemView);
parent = itemView.findViewById(R.id.parent);
imgBook = itemView.findViewById(R.id.imgBook);
txtName = itemView.findViewById(R.id.txtBookName);
downArrow = itemView.findViewById(R.id.btnDownArrow);
upArrow = itemView.findViewById(R.id.btnUpArrow);
expanded = itemView.findViewById(R.id.expandedRellayout);
collapsed = itemView.findViewById(R.id.collapsedRelLayout);
txtAuthor = itemView.findViewById(R.id.txtAuthor);
txtDesc = itemView.findViewById(R.id.txtShortDesc);
downArrow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Book book = books.get(getAdapterPosition());
book.setExpanded(!book.isExpanded());
notifyItemChanged(getAdapterPosition());
}
});
upArrow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Book book = books.get(getAdapterPosition());
book.setExpanded(!book.isExpanded());
notifyItemChanged(getAdapterPosition());
}
});
}
}
}
只是找到了解决方法,决定和大家分享一下。您可以在前一个项目布局中创建另一个布局,并使其可见性消失,在OnBindViewWholder中的adapter类中,您可以创建一个逻辑,将新活动中的可见性更改为“可见”。
if ( parentActivity.equals("new Activity Name") {
holder.newLayout.setVisibilty(Visible)
}
适配器内的代码是
图像不显示。在一个SO例子中说要检查适配器中的计数,但我认为它是正确的。我在logcat中得到这个错误 这是代码主活动 这是我的适配器。
我根据类似问题的答案修改了代码,但没有一个有效。我正在使用TabFragments和RecyclerViews。控制台显示错误“E/RecyclerView:No adapter attached;kipping layout”四次。 (当修改它也给了我错误java.lang.NullPointerException:试图调用虚方法'voidandroid.support.v7.widget.Re
我有“E/RecyclerView:没有连接适配器;跳过布局”错误消息。我在片段中有recycleView,所以我一定是在fragment1.java上做错了什么。 这是代码。如您所见,我在代码上设置了适配器,但我收到此错误。任何帮助将不胜感激。谢谢。 公共类Fragment1扩展片段{ } 公共类圣经适配器扩展回收器View.Adapter { }
当试图从API获取JSON数据并在RecyclerView上显示时,我得到以下错误: 我已经使用RecyclerView有时,我从来没有这个问题。 主要活动: 适配器: 取景框: 我搜索了很多如何解决这个错误,但我不能。
我正在使用Firebase数据库开发一个带有片段和回收器视图的应用程序。我希望该应用程序从数据库中获取数据并将其显示在片段布局中。我非常认为我的代码很好,应该可以正常工作。 我得到错误日志 我在其他问题和论坛上尝试了一切。 这是我的家。java代码: } 我的适配器类: } 我在这方面陷入了困境。提前感谢。