2016-04-28 4 views
0

すべての冷蔵庫アイテムをtagidに基づいて反映しますが、 ArrayListのサイズはnull、ArrayIndexOutOFBoundExceptionを返します。私はサブカテゴリー名リストを反映しているselectCategoryスピナーを使用しました。並行して、選択したカテゴリーのtagidを使用して、スピナーで選択したカテゴリー項目をGridviewに反映したいと考えています。私はこのようなJSONデータを持っています。タグIDに基づいてデータがグリッドビューに反映されるSpinnerの2つの配列リストの使用方法

JSON結果:

{ 
"code": "200", 
"action": "success", 
"message": "Your request has successfully completed", 
"status": "1", 
"subcategory_detail": [ 
    { 
     "category_id": "113626", 
     "category": "Refrigerators", 
     "tag_id": "818415", 
     "type_id": "63942", 
     "disp_order": "0", 
     "shop_id": "7508" 
    }, 
    { 
     "category_id": "113627", 
     "category": "Air Condition", 
     "tag_id": "818416", 
     "type_id": "63942", 
     "disp_order": "1", 
     "shop_id": "7508" 
    }, 
    { 
     "category_id": "113628", 
     "category": "Kitchen Appliances", 
     "tag_id": "818417", 
     "type_id": "63942", 
     "disp_order": "2", 
     "shop_id": "7508" 
    }, 
    { 
     "category_id": "113629", 
     "category": "Utilities", 
     "tag_id": "818418", 
     "type_id": "63942", 
     "disp_order": "3", 
     "shop_id": "7508" 
    }, 
    { 
     "category_id": "113634", 
     "category": "Washing Machine", 
     "tag_id": "818434", 
     "type_id": "63942", 
     "disp_order": "4", 
     "shop_id": "7508" 
    } 
] 
} 

OnItemSelectedListener:

public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
    str = selectCategory.getSelectedItem().toString(); 
    subcatIdList=new ArrayList<>(); 
    subcattagidList = new ArrayList<>(); 
    Log.d("categoryidid",""+subcatIdList.size()); 
    int x=selectCategory.getSelectedItemPosition(); 
    String y=subcatIdList.get(position+1); 
    Toast.makeText(getApplicationContext(),"List ID "+y,Toast.LENGTH_SHORT).show(); 
    if (position == 0) 
    { 
     getSupportActionBar().setTitle("" + category_name); 
    }else { 
     getSupportActionBar().setTitle("" + str); 
     b = str; 

     Toast.makeText(ProductListGridView.this,"b:"+b,Toast.LENGTH_SHORT).show(); 
//  new AsyncSearchingTask().execute(); 
    } 

} 
@Override 
public void onNothingSelected(AdapterView<?> parent) { 

} 

AsyncTaskクラス:

class SubCatList extends AsyncTask<String, String, JSONObject> { 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
    } 
    @Override 
    protected JSONObject doInBackground(String... args) { 
     UserFunction userFunction = new UserFunction(); 
     JSONObject json = userFunction.getSubCAtList(category_id); 
     return json; 
    } 
    @Override 
    protected void onPostExecute(JSONObject json) { 
     try { 
      if (json.getString(KEY_SUCCESS) != null) { 
       String res = json.getString(KEY_SUCCESS); 
       if(Integer.parseInt(res) == 1){ 
        JSONArray posts = json.getJSONArray("subcategory_detail"); 
        for (int i = 0; i < posts.length(); i++) { 
         JSONObject post = posts.getJSONObject(i); 
         a=post.getString("category_id").toString(); 
         b=post.getString("category").toString(); 
         c = post.getString("type_id").toString(); 
         Log.e("Response categorywise", "" + b); 
         Log.e("Response categoryidwise",""+a); 
         Log.e("Response categorytagid",""+c); 
         subcatIdList.add(a); 
         subcatNameList.add(b); 
         subcattagidList.add(c); 

        } 
       }else if(Integer.parseInt(res) == 0){ 
//     Toast.makeText(getApplicationContext(), "Something went wrong!", Toast.LENGTH_LONG).show(); 
       } 
      } 
      Log.d("monacategoryid",""+subcatIdList.size()); 
      Log.d("monaTagid",""+subcatIdList.size()); 
      Toast.makeText(getApplicationContext(), "c"+c, Toast.LENGTH_LONG).show(); 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

あなたのコード、あなたがやりたいこと、あなたが直面している問題は何ですか?あなたの質問は明確ではありません。 –

+0

私はspinnerでcの値を使ってgridview cに格納されているtagidに基づいています。スピナーで使用している場合は、ゼロのtagid配列サイズを返しています。 –

+0

yの値が配列0のゼロとIndexoutofBoundexceptionのサイズを投げている、Plz help。 –

答えて

0

あなたはこのように試すことができます(リスナーの変更)

String itemId =""; 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

     String selValue = parent.getItemAtPosition(position).toString(); 

     for(int z= 0; z<subcatNameList.size();z++){ 
      if(selValue.trim().equal(""+subcatNameList.get(z).trim()){ 
       // do some changes according to 
       itemId = subcattagidList.get(z); 
       new callAsukforChanges().execute(); 
      } 
     } 

    } 

私はこれがあなたを助けてくれることを望みます。ありがとう

+0

java.lang.IndexOutOfBoundsException:無効なインデックス0、サイズが0 at java.util.ArrowList.throwIndexOutOfBoundsException(ArrayList.java:255) at java.util.ArrayList.get(ArrayList.java:308) –

+0

同じエラーが発生しましたsubcatidlistのサイズをゼロにすることができます。 –

+0

デバッガでリストを確認してください。 (subcatidlist)のサイズと値 – rockstar

関連する問題