2017-07-11 49 views
0

嗨,大家好我有一個卡片視圖,填充它的數據從一個JSON。我用凌空分析json,它是成功的。 但在卡片視圖沒有什麼顯示recyclerview不顯示任何東西在片段

這裏是我的JSON

{"photo":[{"id":"4","profile_id":"mahdi","caption":"hello","image_url":"https:\/\/hemispheric-suggest.000webhostapp.com\/img\/img\/birjand.jpg","profile_img_url":"https:\/\/hemispheric-suggest.000webhostapp.com\/prof\/prof\/prof_1.jpg","insert_time":"2017-07-09 11:21:44"} 

和我的片段適配器:

private RecyclerView recyclerView; 
private RequestQueue mRequestQueue; 
ArrayList<Card> list = new ArrayList<>(); 

String url = "My url"; 
@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.frag,container,false); 
    recyclerView = (RecyclerView) view.findViewById(R.id.recycler); 

    mRequestQueue = Volley.newRequestQueue(getActivity()); 

    list(); 

    LinearLayoutManager MyLayoutManager = new LinearLayoutManager(getActivity()); 
    MyLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); 
    recyclerView.setAdapter(new Adapter(list)); 
    return view; 
} 


public class Adapter extends RecyclerView.Adapter<Adapter.MyviewHolder>{ 

    // private ArrayList<Card> list; 

    public Adapter(ArrayList<Card> data) { 
     list = data; 
    } 

    public class MyviewHolder extends RecyclerView.ViewHolder{ 

     public TextView textView; 
     public ImageView imageView; 
     public MyviewHolder(View itemView) { 
      super(itemView); 
      textView = (TextView) itemView.findViewById(R.id.textView); 
      imageView = (ImageView) itemView.findViewById(R.id.imageView); 
     } 
    } 

    @Override 
    public MyviewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
      View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_row,parent,false); 
     return new MyviewHolder(view); 
    } 

    @Override 
    public void onBindViewHolder(MyviewHolder holder, int position) { 

     Card card = list.get(position); 
     holder.textView.setText(card.getName()); 
     Glide.with(getActivity()).load(card.getImg()).into(holder.imageView); 

    } 



    @Override 
    public int getItemCount() { 
     return list.size(); 
    } 
} 

public void list() { 

    JsonObjectRequest object = new JsonObjectRequest(Request.Method.GET, url, 
      new Response.Listener<JSONObject>() { 
       @Override 
       public void onResponse(JSONObject response) { 
        try{ 

         JSONArray array = response.getJSONArray("photo"); 
         for (int i = 0; i <array.length() ; i++) { 
          JSONObject temp = array.getJSONObject(i); 
          Card card = new Card(); 
          card.setName(temp.getString("profile_id")); 
          card.setImg(temp.getString("image_url")); 
          list.add(card); 
         } 


        }catch (Exception ex){ 
        } 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 

       } 
      } 
    ); 
    mRequestQueue.add(object); 
} 

}

感謝對您的幫助

回答

0

排球是異步的,所以當你打電話時:

recyclerView.setAdapter(new Adapter(list)); 

僅僅在您排入您的請求後幾毫秒內,很可能列表仍然是空的,因爲Volley尚未收到任何響應。一旦獲得onResponse回調中的響應,您應該設置適配器。