2016-02-13 67 views
0

图像不显示。在一个SO例子中说要检查适配器中的计数,但我认为它是正确的。 我在logcat的没有连接适配器;跳过布局recyclerview

No adapter attached; skipping layout recyclerview 

此收到此错误是代码mainactivity

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(); 
    } 

} 
+0

看看[这个答案](http://stackoverflow.com/a/30581896/4224337) – Rami

+0

这不是一个致命错误,更像是一个警告了。 –

+0

@MohammedAoufZOUAG以及它没有进入okhttp类 – Moudiz

回答

1

尝试调试您的代码并检查是否执行myMethod()方法。

另外,创建适配器时不需要调用notifyDataSetChanged()

public void myMethod(ArrayList result) { 
     mAdapter = new MyAdapter(result,Search.this); 
     mRecyclerView.setAdapter(mAdapter); 
} 
+1

我应该添加执行okhttp来访问我的界面 – Moudiz

1

请删除mAdapter.notifyDataSetChanged()前设置适配器在以下代码行中。您可以在为RecyclerView设置适配器后执行此操作。

@Override 
     public void myMethod(ArrayList result) { 
      mAdapter = new MyAdapter(result,Search.this); 
      mAdapter.notifyDataSetChanged(); 
      mRecyclerView.setAdapter(mAdapter); 
+0

我做了你说的,仍然有错误E/RecyclerView:没有附加适配器;跳过布局 – Moudiz

+0

你可以把myMethod()类的整个代码? –

+0

好吧告诉我// viewHolder.txtHeader.setText(mDataset.get(position));适配器工作中的注释代码?我的意思是文本显示正确?由于错误没有附加适配器;跳过布局recyclerview是可以的,因为您不是在片段的onCreateView()活动的onCreate()中设置适配器,而是在后台线程中执行。所以这个警告对我来说似乎很好。 –

相关问题