gpt4 book ai didi

java - RecyclerView 没有调用 onCreateViewHolder 或 onBindView

转载 作者:IT老高 更新时间:2023-10-28 20:25:40 26 4
gpt4 key购买 nike

没有出现任何错误,所有数据似乎都有效。出于某种原因,正在调用与 View 相关的方法。我已经确定了以下几点:

  • getItemCount() 是唯一被调用的适配器方法,它返回一个正整数值,(我知道这将是你们要看的区域)

    • 正在调用构造函数,成员变量有效。

    • Parent View是一个垂直的LinearLayout;没有 ScrollView ,或任何其他具有自己滚动属性的 View 。

    • 创建包含 fragment View 并显示在屏幕上。

这是 fragment 中的声明,后面是适配器。任何帮助将不胜感激,因为这完全令人困惑。

SubMenuAdapter adapter = new SubMenuAdapter(getActivity(), mContentItems);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setAdapter(adapter);
public class SubMenuAdapter extends RecyclerView.Adapter<SubMenuAdapter.ViewHolder> {
private static final String TAG = String.format("==> %S", SubMenuAdapter.class.getSimpleName());

private final List<ContentItem> mContentItems;
private Context mContext;

public SubMenuAdapter(Context context, List<ContentItem> contenItems) {
Log.d(TAG, "Constructor called");
mContentItems = contenItems;
mContext = context;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
Log.d(TAG, "onCreateViewHolder called");
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_resource_efficiency, parent, false);
return new ViewHolder(view);
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Log.d(TAG, "onBindViewHolder called");

ContentItem item = mContentItems.get(position);
holder.textName.setText(item.getName());
FontSetter.setMyriadProRegular(mContext, holder.textName);
Picasso.with(mContext).load("file://" + item.getPreviewImageDefault()).into(holder.imageIcon);
}

@Override
public int getItemCount() {
Log.d(mContext, String.format("getItemCount: %d", mContentItems.size()));
return mContentItems.size();
}

// ViewHolder
public static class ViewHolder extends RecyclerView.ViewHolder {

TextView textName;
ImageView imageIcon;

public ViewHolder(View view) {
super(view);
textName = (TextView) view.findViewById(R.id.tv_resource_efficiency_option);
imageIcon = (ImageView) view.findViewById(R.id.iv_resource_efficiency_icon);
}
}

最佳答案

这也可能对某人有所帮助

第一次使用

recyclerView.setAdapter(adapter);

然后:

recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

所以它看起来像这样:

recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

顺序颠倒

更新:

现在我只是使用:

app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"

RecyclerView中的xml

关于java - RecyclerView 没有调用 onCreateViewHolder 或 onBindView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28992929/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com