2016-08-09 3 views
-5

Я получаю id от предыдущей активности, если id равен нулю, тогда я разбираю данные и сохраняю их в arraylist, но если это не null, я не анализирую данные и пытаюсь установить arraylist в listview, но это показывает ArrayList нульArraylist be null

 mRecyclerView = (ListView) findViewById(R.id.filter_orderlist); 
     makeJsonArrayRequestCountry(); 

    } 


    private void makeJsonArrayRequestCountry() { 

     showpDialog(); 
     JsonArrayRequest req = new JsonArrayRequest(filter_url, 
       new Response.Listener<JSONArray>() { 
        @Override 
        public void onResponse(JSONArray response) { 
         Log.d("ress", response.toString()); 

         filterList =new ArrayList<FilterModelClass>(); 
         // Parsing json 
         for (int i = 0; i < response.length(); i++) { 
          try { 

           JSONObject obj = response.getJSONObject(i); 

           String heder=obj.getString("filterName"); 

           System.out.println("Hader"+heder); 

           JSONArray details=obj.getJSONArray("getParam"); 
           for(int j=0;j<details.length();j++) 
           { 

            JSONObject det=details.getJSONObject(j); 
            FilterModelClass movie = new FilterModelClass(); 
            movie.setFilter_Name(det.getString("paramName")); 
            String cityid=movie.setFilter_ID(det.getString("paramId")); 
            filterList.add(movie); 

           } 

           mAdapter = new MyCustomBaseAdapter(FilterListActivity.this,filterList); 
           mRecyclerView.setAdapter(mAdapter); 

           btnSelection.setOnClickListener(new View.OnClickListener() { 

            @Override 
            public void onClick(View v) { 
             String data = ""; 
             List<FilterModelClass> stList = ((MyCustomBaseAdapter) mAdapter) 
               .getStudentist(); 

             for (int i = 0; i < stList.size(); i++) { 
              FilterModelClass singleStudent = stList.get(i); 
              if (singleStudent.isselected() == true) { 

               data = data+singleStudent.getFilter_ID().toString()+","; 

              } 

             } 
             Intent intent=new Intent(); 
             intent.putExtra("filterid",data); 
             setResult(RESULT_OK, intent); 
             FilterListActivity.this.finish(); 

             Toast.makeText(FilterListActivity.this, 
               "Selected Students:" + data, Toast.LENGTH_LONG) 
               .show(); 


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

         } 

         // notifying list adapter about data changes 
         // so that it renders the list view with updated data 

         hidepDialog(); 

        } 
       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       VolleyLog.d("ErrorVolley", "Error: " + error.getMessage()); 
       Toast.makeText(getApplicationContext(), 
         error.getMessage(), Toast.LENGTH_SHORT).show(); 
       hidepDialog(); 

      } 
     }); 

     MyApplication.getInstance().addToReqQueue(req, "jreq"); 
    } 


    private void showpDialog() { 
     if (!pDialog.isShowing()) 
      pDialog.show(); 
    } 

    private void hidepDialog() { 
     if (pDialog.isShowing()) 
      pDialog.dismiss(); 
    } 



    @Override 
    public void onClick(View v) { 

     switch (v.getId()) { 


      default: 
       break; 
     } 

    } 




    public class MyCustomBaseAdapter extends BaseAdapter { 
     private List<FilterModelClass> searchArrayList; 
     ViewHolder holder; 
     private LayoutInflater mInflater; 
     SharedPreferences.Editor editor; 
     Context context; 

     public MyCustomBaseAdapter(Context mainActivity, List<FilterModelClass> results) { 
      context = mainActivity; 
      searchArrayList = results; 
      mInflater = LayoutInflater.from(context); 
     } 

     public int getCount() { 
      return searchArrayList.size(); 

     } 

     public Object getItem(int position) { 
      return searchArrayList.get(position); 
     } 

     public long getItemId(int position) { 
      return position; 
     } 

     public View getView(final int position, View convertView, ViewGroup parent) 
     { 
      SharedPreferences sharedPrefs = context.getSharedPreferences("sharedPrefs", Context.MODE_PRIVATE); 


      if (convertView == null) { 
       convertView = mInflater.inflate(R.layout.sorting_items, null); 
       holder = new ViewHolder(); 
       holder.txtName = (TextView) convertView.findViewById(R.id.tvName); 
       holder.cB = (CheckBox)convertView.findViewById(R.id.chkSelected); 

       convertView.setTag(holder); 
      } 
      else { 
       holder = (ViewHolder) convertView.getTag(); 
      } 


      editor = sharedPrefs.edit(); 

      holder.txtName.setText(searchArrayList.get(position).getFilter_Name()); 

      holder.cB.setChecked(sharedPrefs.getBoolean("CheckValue" + position, false)); 
      holder.cB.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
       @Override 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 


        editor.putBoolean("CheckValue" + position, isChecked); 
        editor.commit(); 
       }}); 
      return convertView; 
     } 

     class ViewHolder { 
      TextView txtName; 
      CheckBox cB; 
     } 
     public List<FilterModelClass> getStudentist() { 
      return searchArrayList; 
     } 

    } 
} 
+0

опубликовать LogCat. – Shubhank

+0

I/System.out: datacat nullnull – rosy

+0

это должно быть 10-30 строк трассировки стека – Shubhank

ответ

3

Вы не установили LayoutManager вашему RecyclerView: использование это установить LayoutManager к вашему RecyclerView:

mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); 

в OnCreate

+0

после 'mRecyclerView.setAdapter (mAdapter); ' –

+0

вы можете установить перед и @AshuKumar –

+0

Хорошая точка. Я не знал, что нет layoutManager по умолчанию. См. [Документы] (https://developer.android.com/reference/android/support/v7/widget/RecyclerView.html#setLayoutManager (android.support.v7.widget.RecyclerView.LayoutManager)) – AlbAtNf

1

проблема эта часть

if(filtrid!=null) 
    { 
     System.out.println("datacat null"+filterList); 
     mAdapter = new CardViewDataAdapter(filterList); 
     mRecyclerView.setAdapter(mAdapter); 

    } 

вы читаете filtrid, но не инициализировать filterList в этом случае.

EDIT:

Получение filtrid из намерения статистов не то же самое, как заполнение filterList. Вы могли бы, вероятно, передать filterList как JSON-String таким же образом, вы прошли filtrid. Затем проанализируйте JSON-String, как вы уже сделали в makeJsonArrayRequestCountry(). Лучше всего было бы сохранить постоянный список (SharedPreferences, SQL, ...) или вообще не хранить его. Просто загрузите список с сервера, всякий раз, когда вы начинаете эту деятельность.

+0

whats решение тогда? – rosy

+0

я инициализируется, как вы сказали, но все-таки recyclerview пуст если (Filtrid! = NULL) { filterList = новый ArrayList (); System.out.println ("datacat null" + filterList); mAdapter = новый CardViewDataAdapter (filterList); mRecyclerView.setAdapter (mAdapter); – rosy

+0

I/System.out: datacat null [] – rosy

Смежные вопросы