2017-04-27 16 views
1

私は2つのtextview "name"と "id"を持っています。私はrecyclerviewとjsonからそれらを入力したいと思います。 Androidモニターでjsonを取得できますが、recyclerviewには何も表示されません!ここでRecyclerViewは何も表示しません

は私MainActivity.javaです:

txt = (TextView) findViewById(R.id.name); 
    idd = (TextView) findViewById(R.id.id); 
    recyclerView = (RecyclerView) findViewById(R.id.recyclerview); 
    recyclerView.setHasFixedSize(true); 
    recyclerView.setLayoutManager(new 
    LinearLayoutManager(getApplicationContext())); 
    listItems = new ArrayList<>(); 
    loadRecyclerViewData(); 
    } 
    public void loadRecyclerViewData() 
{ 
    final String URL_DATA = "my url"; 
    final StringRequest stringRequest = new StringRequest(Request.Method.GET, URL_DATA, new Response.Listener<String>() { 
     @Override 
     public void onResponse(String s) { 
      try { 
       JSONObject jsonObject = new JSONObject(s); 
       JSONArray array = jsonObject.getJSONArray(""); 

       for(int i=0;i<array.length();i++) 
       { 
        JSONObject o = array.getJSONObject(i); 
        ListItem_Ostan item = new ListItem_Ostan(o.getString("name"),o.getString("id")); 
        listItems.add(item); 
       } 
       adapter = new MyAdapter_Ostan(listItems,getApplicationContext()); 
       recyclerView.setAdapter(adapter); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 


       } 
      }) 
     RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext()); 
    requestQueue.add(stringRequest); 
} 

、ここでは私のListItem_ostan.javaです:

public class ListItem_Ostan { 
private String id,name; 

    public ListItem_Ostan(String id, String name) 
    { 
     this.id = id; 
     this.name = name; 
    } 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

そして、ここでは私のMyAdapter_ostan.javaです:

public class MyAdapter_Ostan extends RecyclerView.Adapter<MyAdapter_Ostan.ViewHolder> { 
private List<ListItem_Ostan> listItems; 
Context context; 

public MyAdapter_Ostan(List<ListItem_Ostan> listItems, Context context) { 
    this.listItems = listItems; 
    this.context = context; 
} 


@Override 
public MyAdapter_Ostan.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.layouts_ostan, parent, false); 
    return new ViewHolder(v); 
} 


@Override 
public void onBindViewHolder(final MyAdapter_Ostan.ViewHolder holder, int position) { 
    final ListItem_Ostan listItem = listItems.get(position); 
    LinearLayout linearLayout = holder.linearLayout; 
    holder.id.setText(listItem.getId()); 
    holder.name.setText(listItem.getName()); 
    final CardView cardView = holder.cardView; 

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

public class ViewHolder extends RecyclerView.ViewHolder { 
    TextView name,id; 
    LinearLayout linearLayout; 
    ArrayList<ListItem_Ostan> listItem = new ArrayList<ListItem_Ostan>(); 
    CardView cardView; 
    Context context; 
    public TextView getName() { 
     return name; 
    } 



    public ViewHolder(View itemView) 
    { 
     super(itemView); 
     cardView = (CardView)itemView.findViewById(R.id.card_view); 
     name = (TextView)itemView.findViewById(R.id.name); 
     id = (TextView)itemView.findViewById(R.id.id); 
    } 

、ここで私のjson応答です:

Value [{"id":"1","name":"Sydney"},{"id":"2","name":"Shiraz"},{"id":"3","name":"Tokyo"},{"id":"4","name":"Tehran"}] 

何が問題ですか?どうすれば修正できますか?助けてください!

+0

印刷 'listItems.size()'最初 –

+0

であなたは試してみました: http://stackoverflow.com/questions/43303817/recyclerview-not-showing-anything – CyberClaw

+0

あなたのJSONレスポンスは、ここで入れて、私は、JSONの解析を考えます間違っています –

答えて

1

あなたJSON

[{ "ID": "1"、 "名前": "シドニー"}、{ "ID": "2"、 "名前": "シラーズ"}、{ "ID": "3"、 "名": "東京"}、{ "ID": "4"、 "名": "テヘラン"}]あなたはこのよう

  JSONArray jArray = new JSONArray(s); 

      for(i=0; i < jArray.length(); i++) 
      { 

      JSONObject jObject = jArray.getJSONObject(i); 
      String name = jObject.getString("name"); 
      String id= jObject.getString("id"); 
      System.out.println("id: " + i + " IntelliJ Amiya " + jObject.getString("id")); 
      ListItem_Ostan item = new ListItem_Ostan(name,id); 
      listItems.add(item); 

     } 
を試すことができます

0

あなたのjson文字列は無効です.Json文字列は常にJsonArrayではなくJsonArrayで始まります。{"ss":[]}

あなたのJSON

{ 
    "array_name": [{ 
     "id": "1", 
     "name": "Sydney" 
    }, { 
     "id": "2", 
     "name": "Shiraz" 
    }, { 
     "id": "3", 
     "name": "Tokyo" 
    }, { 
     "id": "4", 
     "name": "Tehran" 
    }] 
} 

以下のように有効か無効here

有効なJSONがhere

あなたのJSON POJOクラスを作成しているを確認してください確認してください。

JSONObject jsonObject = new JSONObject(s); 
       JSONArray array = jsonObject.getJSONArray(""); 

JSONObject jsonObject = new JSONObject(s); 
       JSONArray array = jsonObject.getJSONArray("array_name"); 
+0

上記の更新された答えを確認してください –

+0

sorry.'getJSONArray'配列名はありません.Jsonは有効です.http://jsonviewer.stack.hu/ –

関連する問題