2016-07-07 54 views
0

它給我「RecyclerView:沒有適配器連接;跳過佈局」錯誤,但在我看來適配器是正確連接。請幫忙。RecyclerView:沒有附加適配器;跳過佈局 - 回收查看錯誤

public class MainActivity extends AppCompatActivity { 

    private final String TAG = "MainActivity"; 
    private RecyclerView recyclerView; 
    private LinearLayoutManager layoutManager; 
    private RecyclerViewAdapter adapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     recyclerView = (RecyclerView)findViewById(R.id.recycler_view); 
     layoutManager = new LinearLayoutManager(MainActivity.this); 
     recyclerView.setLayoutManager(layoutManager); 
     requestJsonObject(); 
    } 

    private void requestJsonObject(){ 
     RequestQueue queue = Volley.newRequestQueue(this); 
     String url ="https://api.myjson.com/bins/2t4j3"; 
     StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 
       Log.d(TAG, "Response " + response); 
       GsonBuilder builder = new GsonBuilder(); 
       Gson mGson = builder.create(); 
       List<ItemObject> posts = new ArrayList<ItemObject>(); 
       posts = Arrays.asList(mGson.fromJson(response, ItemObject[].class)); 
       adapter = new RecyclerViewAdapter(MainActivity.this, posts); 
       recyclerView.setAdapter(adapter); 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       Log.d(TAG, "Error " + error.getMessage()); 
      } 
     }); 
     queue.add(stringRequest); 
    } 
} 

我正在移動我的方法,但它不工作。我在這裏尋找答案,但只有錯誤的實施適配器的問題。我不知道這裏有什麼問題。

+0

發表您的完整代碼和logcat也 –

回答

0

試着把這行:

adapter = new RecyclerViewAdapter(MainActivity.this, posts); 

添加LayoutManagerRecyclerView後。當然,該列表將是空的,只是初始化RecyclerAdapter並將其分配給RecyclerView

然後,當Volley完成它的要求,使用:

recyclerView.getAdapter().addAll(posts); 
recyclerView.getAdapter().notifyDataSetChaged(); 

最後的命令添加元素到RecyclerView的適配器並通知LayoutManager的變化。

0

您在延遲線程中致電setAdapter。在主線程中創建視圖時,Recyclerview沒有適配器。

setLayoutManager

List<ItemObject> posts = new ArrayList<ItemObject>(); 
adapter = new RecyclerViewAdapter(MainActivity.this, posts); 

將這個兩行onResponse,您可以西爾設置一個新的適配卡或更新數據,其中取決於具體的實現適配器。

+0

對不起,但它不工作:/我在佈局管理器之前/之後像佈局管理器之前/之後移動適配器,但它不工作 – Tom

+0

我layoutAdapter之前layoutManager和錯誤消失,但應用程序不工作,它只顯示空格和日誌貓是明確的:/ https://scontent-fra3-1.xx.fbcdn.net/v/t34.0-12/13624505_1107401415965387_789590380_n.png?oh=a78e6331d61e135edd4cd9c757b85698&oe=577F9CFC – Tom

+0

你應該在onResponse中保留'setAdapter'(這意味着兩個調用),或者在適配器中更新你的列表並調用notifyDataSetChaged()'' – Joshua

相關問題