如何设置recyclerView适配器?

如何设置recyclerView适配器?

问题描述:

所以,我不知道该怎么做。我想获取jsonData并使用来自同一个Activtiy的这些数据设置一个适配器。这甚至有可能吗?如果是,我应该怎么做,因为它会因为“下载”延迟而一直崩溃。适配器想要设置比获取数据的时间早,因为它是空数组。如何设置recyclerView适配器?

private SzabadEuMusorok[] mSzabadEuMusoroks; 

@InjectView(R.id.archivumReyclerView) 
RecyclerView mRecyclerView; 

@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_archivum); 
    ButterKnife.inject(this); 

    setArray(); 

    CollectionsAdapter adapter = new CollectionsAdapter(this, mSzabadEuMusoroks); 
    mRecyclerView.setAdapter(adapter); 

    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this); 
    mRecyclerView.setLayoutManager(layoutManager); 

    mRecyclerView.setHasFixedSize(true); 
} 
+0

在你的下载器中设置setAdapter()...... – sushildlh

+0

我应该在哪里设置它?什么是下载器? – Marci

+0

你的JSON数据在哪里? – sushildlh

请务必从调用webservice的

请了遵循以下让你得到关于如何实现它的概述适配器设置你的数据后,才:

 public class MainActivity extends Activity implements OnClickListener { 
      private SzabadEuMusorok[] mSzabadEuMusoroks; 

      @InjectView(R.id.archivumReyclerView) 
      RecyclerView mRecyclerView; 
      RecyclerView.LayoutManager layoutManager ; 
      @Override 
      protected void onCreate(@Nullable Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_archivum); 
       ButterKnife.inject(this); 

       setArray(); 


       layoutManager = new LinearLayoutManager(this); 

     new LongOperation().execute("");//call your webservice 
      } 



       private class LongOperation extends AsyncTask<String, Void, String> { 

        @Override 
        protected String doInBackground(String... params) { 
         for (int i = 0; i < 5; i++) { 
          try { 

      //call your webservice here 
          } catch (InterruptedException e) { 
           Thread.interrupted(); 
          } 
         } 
         return serviceResult;// this will be passed to onPostExecute 
        } 

        @Override 
        protected void onPostExecute(String result) { 
mRecyclerView.setLayoutManager(layoutManager); 

       mRecyclerView.setHasFixedSize(true); 
        CollectionsAdapter adapter = new CollectionsAdapter(this, mSzabadEuMusoroks); 
      mRecyclerView.setAdapter(adapter); //set your adapter using result in webservice called in doinbackground 
        } 

        @Override 
        protected void onPreExecute() { 
      // show a progress dialog 

      } 

       } 
      } 
+0

谢谢为了答案!但我想用OkHttp来做。在完成设置之后,我调用了setAdapter,现在它崩溃,出现异常:没有连接适配器;跳过布局 – Marci

+0

回应你的okhttp响应'setAdapter()'响应成功后...... – sushildlh

+0

请将onPostExecute(String结果)中的所有代码复制到你的responseSuccess块 –