Android 无适配器连接;跳过布局回收视图
图像未显示。在一个SO示例中,我说要检查适配器中的计数,但我认为这是正确的。 我在日志中发现了这个错误Android 无适配器连接;跳过布局回收视图,android,android-adapter,android-recyclerview,Android,Android Adapter,Android Recyclerview,图像未显示。在一个SO示例中,我说要检查适配器中的计数,但我认为这是正确的。 我在日志中发现了这个错误 No adapter attached; skipping layout recyclerview 这是代码main活动 RecyclerOkHttpHandler handler = new RecyclerOkHttpHandler( this, new RecyclerOkHttpHandler.MyInterface() { @Override pub
No adapter attached; skipping layout recyclerview
这是代码main活动
RecyclerOkHttpHandler handler = new RecyclerOkHttpHandler( this, new RecyclerOkHttpHandler.MyInterface() {
@Override
public void myMethod(ArrayList result) {
mAdapter = new MyAdapter(result,Search.this);
mAdapter.notifyDataSetChanged();
mRecyclerView.setAdapter(mAdapter);
这是我的适配器
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private ArrayList<Listitem> mDataset;
Context mContext;
public class ImageViewHolder extends RecyclerView.ViewHolder {
//ImageView mImage;
public TextView txtHeader;
public TextView txtFooter;
public ImageView image;
public ImageViewHolder(View itemView) {
super (itemView);
txtHeader = (TextView) itemView.findViewById(R.id.firstLine);
txtFooter = (TextView) itemView.findViewById(R.id.secondLine);
image = (ImageView) itemView.findViewById(R.id.icon);
}
}
public void add(int position, Listitem item) { //changed from string to listitem
mDataset.add(position, item);
notifyItemInserted(position);
}
public void remove(String item) {
int position = mDataset.indexOf(item);
mDataset.remove(position);
notifyItemRemoved(position);
}
// Provide a suitable constructor (depends on the kind of dataset)
public MyAdapter(ArrayList<Listitem> myDataset, Context context) {
mDataset = myDataset;
mContext = context;
}
// Create new views (invoked by the layout manager)
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
// create a new view
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.rowlayout, parent, false);
// set the view's size, margins, paddings and layout parameters
ImageViewHolder vh = new ImageViewHolder(v);
return vh;
}
private static final int TYPE_IMAGE = 1;
private static final int TYPE_GROUP = 2;
@Override
public int getItemViewType(int position) {
// here your custom logic to choose the view type
return position;
}
// Replace the contents of a view (invoked by the layout manager)
@Override
public void onBindViewHolder(RecyclerView.ViewHolder TextViewHolder, int position) {
ImageViewHolder viewHolder = (ImageViewHolder) TextViewHolder;
// viewHolder.txtHeader.setText(...)
final Listitem item;
// final String name = mDataset.get(position);
item = mDataset.get(position);
// viewHolder.txtHeader.setText(mDataset.get(position));
viewHolder.txtHeader.setText(mDataset.get(position).getUrl());
Picasso.with(mContext)
.load(item.getUrl())
.placeholder(R.drawable.logo)
.fit()
.noFade()
.into(viewHolder.image);
/* viewHolder.txtFooter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
remove(item);
}
});*/
// viewHolder.txtFooter.setText("Footer: " + mDataset.get(position));
}
// Return the size of your dataset (invoked by the layout manager)
@Override
public int getItemCount() {
return mDataset.size();
}
}
公共类MyAdapter扩展了RecyclerView.Adapter{
私有ArrayList数据集;
语境;
公共类ImageViewHolder扩展了RecyclerView.ViewHolder{
//图像视图模拟图像;
公共文本视图txtHeader;
公共文本视图txtFooter;
公众形象;
公共图像视图持有者(视图项视图){
超级(项目视图);
txtHeader=(TextView)itemView.findViewById(R.id.firstLine);
txtFooter=(TextView)itemView.findViewById(R.id.secondLine);
image=(ImageView)itemView.findViewById(R.id.icon);
}
}
public void add(int位置,Listitem项){//从字符串更改为Listitem
mDataset.add(位置、项目);
(位置);
}
公共无效删除(字符串项){
int position=mDataset.indexOf(项目);
mDataset.remove(位置);
已移除(位置)的项目;
}
//提供合适的构造函数(取决于数据集的类型)
公共MyAdapter(ArrayList myDataset,上下文){
mDataset=myDataset;
mContext=上下文;
}
//创建新视图(由布局管理器调用)
@凌驾
public RecyclerView.ViewHolder onCreateViewHolder(视图组父级,
int视图类型){
//创建新视图
视图v=LayoutInflater.from(parent.getContext()).flate(R.layout.rowlayout,parent,false);
//设置视图的大小、边距、填充和布局参数
ImageViewHolder vh=新的ImageViewHolder(v);
返回vh;
}
私有静态最终整数类型_IMAGE=1;
私有静态最终int TYPE_GROUP=2;
@凌驾
public int getItemViewType(int位置){
//这里是选择视图类型的自定义逻辑
返回位置;
}
//替换视图的内容(由布局管理器调用)
@凌驾
BindViewHolder上的公共无效(RecyclerView.ViewHolder文本ViewHolder,int位置){
ImageViewHolder viewHolder=(ImageViewHolder)TextViewHolder;
//viewHolder.txtHeader.setText(…)
最后清单项目;
//最终字符串名称=mDataset.get(位置);
item=mDataset.get(位置);
//viewHolder.txtHeader.setText(mDataset.get(position));
viewHolder.txtHeader.setText(mDataset.get(position.getUrl());
毕加索(McContext)
.load(item.getUrl())
.占位符(R.可绘制.徽标)
.fit()
.noFade()
.into(viewHolder.image);
/*viewHolder.txtFooter.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
删除(项目);
}
});*/
//viewHolder.txtFooter.setText(“页脚:+mDataset.get(position));
}
//返回数据集的大小(由布局管理器调用)
@凌驾
public int getItemCount(){
返回mDataset.size();
}
}
在以下代码行中设置适配器之前,请先删除mAdapter.notifyDataSetChanged()。一旦为RecyclerView设置了适配器,就可以执行此操作
@Override
public void myMethod(ArrayList result) {
mAdapter = new MyAdapter(result,Search.this);
mAdapter.notifyDataSetChanged();
mRecyclerView.setAdapter(mAdapter);
在以下代码行中设置适配器之前,请删除mAdapter.notifyDataSetChanged()。一旦为RecyclerView设置了适配器,就可以执行此操作
@Override
public void myMethod(ArrayList result) {
mAdapter = new MyAdapter(result,Search.this);
mAdapter.notifyDataSetChanged();
mRecyclerView.setAdapter(mAdapter);
尝试调试代码并检查是否执行了
myMethod()
method
另外,创建适配器时无需调用notifyDataSetChanged()
public void myMethod(ArrayList result) {
mAdapter = new MyAdapter(result,Search.this);
mRecyclerView.setAdapter(mAdapter);
}
尝试调试代码并检查是否执行了
myMethod()
method
另外,创建适配器时无需调用notifyDataSetChanged()
public void myMethod(ArrayList result) {
mAdapter = new MyAdapter(result,Search.this);
mRecyclerView.setAdapter(mAdapter);
}
看一看,这不是致命的错误,更像是一个警告。@MohammedAoufZOUAG它没有进入okhttpclass@Rami好的,我查一下thanks@Rami你就是那个人!,你是对的,它没有访问myMethod,因为我忘记了执行okhttp需要执行才能工作。请添加为接受答案,感谢您的支持。请看一看,这不是致命错误,更像是一个警告。@MohammedAoufZOUAG嗯,它没有进入okhttpclass@Rami好的,我查一下thanks@Rami你就是那个人!,你是对的,它没有访问myMethod,因为我忘记了执行okhttp需要执行才能工作。请添加作为接受答案,感谢您的支持我照您所说的做了,但仍然收到错误E/RecyclerView:未连接适配器;跳过layoutOk tell me//viewHolder.txtHeader.setText(mDataset.get(position));适配器中的注释代码是否正常工作?我的意思是文本是否正确显示?错误为未连接适配器;跳过布局回收视图是可以的,因为您并没有在片段的onCreateView()活动的onCreate()中设置适配器,而是在后台线程中进行设置。所以这个警告对我来说很好。谢谢你的支持我的错误是我没有为okhhtp添加执行,当我添加时,它起作用了。谢谢你的支持哦……愚蠢的错误P,有时会发生。不客气。我照你说的做了,但仍然收到错误E/RecyclerView:没有连接适配器;跳过layoutOk tell me//viewHolder.txtHeader.setText(mDataset.get(position));适配器中的注释代码是否正常工作?我的意思是文本是否正确显示?错误为未连接适配器;跳过布局回收视图是可以的,因为您并没有在片段的onCreateView()活动的onCreate()中设置适配器,而是在后台线程中进行设置。所以这个警告对我来说似乎很好