2017-02-15 3 views
-2

Вот код для MainActivity Как просматривать ListView продукты посоветуете мне как можно скорееМой ListView не отображает его содержание

public class ProductList extends AppCompatActivity { 
public static ArrayList<ItemProductList> values1=new ArrayList<ItemProductList>(); 
ListView list_productlist; 
Context context = this; 
public ItenProductAdapter mAdapter; 
String category,name1; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_product_list); 
    list_productlist = (ListView) findViewById(R.id.list_productlist); 
    category=getIntent().getStringExtra("category"); 
    name1=getIntent().getStringExtra("name"); 
    loadJSON(); 
    mAdapter= new ItenProductAdapter(context,values1); 
    list_productlist.setAdapter(mAdapter); 
} 

private void loadJSON() { 
    StringRequest jsonObjReq = new StringRequest(Request.Method.POST, 
      "http://arshinfosystems.co.in/demo/AoneRubber/productlist.php", 
      new Response.Listener<String>() { 


       @Override 
       public void onResponse(String response) { 
        try { 
         JSONObject jObject = new JSONObject(response); 
         JSONArray jsonArray = jObject.getJSONArray("cart"); 
         for (int i = 0; i < jsonArray.length(); i++) { 

          JSONObject jbjct = jsonArray.getJSONObject(i); 
          ItemProductList itemListModel = new ItemProductList(); 
          itemListModel.thickness1 = jbjct.getString("thickness"); 
          itemListModel.id1 = jbjct.getString("id"); 
          itemListModel.price1 = jbjct.getString("price"); 
          itemListModel.category1 = jbjct.getString("category"); 
          itemListModel.name1=jbjct.getString("name"); 
          itemListModel.sr_no=jbjct.getString("sr_no"); 
          values1.add(itemListModel); 
         } 


        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 
      }, new Response.ErrorListener() { 

     @Override 
     public void onErrorResponse(VolleyError error) { 

      Toast.makeText(ProductList.this, error.toString(), Toast.LENGTH_SHORT).show(); 

     } 
    }) { 
     @Override 
     protected Map<String, String> getParams() { 
      Map<String, String> params = new HashMap<String, String>(); 
      params.put("category", category); 
      params.put("name", name1); 
      return params; 
     } 
    }; 
    jsonObjReq.setRetryPolicy(new DefaultRetryPolicy(50000, 
      DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
      DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 
    RequestQueue requestQueue = Volley.newRequestQueue(this); 
    requestQueue.add(jsonObjReq); 
    } 
} 

Вот код для адаптера Как просматривать ListView продукты, пожалуйста, предложить мне, как только возможно, пожалуйста, ребята

public class ItenProductAdapter extends BaseAdapter { 
public static ArrayList<ItemProductList> list1; 
String idValues = ""; 
Context context; 
public static Integer total; 
Bitmap mIcon11 = null; 
ViewHolder holder; 

public ItenProductAdapter(Context context, ArrayList<ItemProductList> list) { 
    super(); 
    this.list1 = list; 
    this.context = context; 


} 

@Override 
public int getCount() { 
    return 0; 
} 

@Override 
public Object getItem(int position) { 
    return null; 
} 

@Override 
public long getItemId(int position) { 
    return 0; 
} 
static class ViewHolder { 
    TextView txt_sr_no; 
    TextView txt_thickness; 
    TextView txt_rates; 
} 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    if (convertView == null) { 

     holder=new ViewHolder(); 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.inflate(R.layout.product_list_item, null); 

     holder.txt_sr_no= (TextView) convertView.findViewById(R.id.txt_sr_no); 
     holder.txt_thickness= (TextView) convertView.findViewById(R.id.txt_thickness); 
     holder.txt_rates= (TextView) convertView.findViewById(R.id.txt_rates); 

     convertView.setTag(holder); 


    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 
    holder.txt_sr_no.setText(list1.get(position).sr_no+")"); 
    holder.txt_thickness.setText(""+ list1.get(position).thickness1); 
    holder.txt_rates.setText("RS "+list1.get(position).price1); 




    return convertView; 
    } 
} 
+0

установить адаптер внутри ответ залпового –

+0

сделано, но это не имеет смысла –

+0

@Camahalan Royette У меня есть проблема в моем приложении, которое является регистрация и регистрация не открываются в версии kitkat, она открывается в более высокой версии, как ее разрешить –

ответ

2

В вашем методе кода GetCount() возвращает 0. Chan ge it до

public int getCount() { 
    return list.size(); 
} 

BTW его лучше расширить ArrayAdapter.

+0

У меня есть проблема в моем приложении, что активность входа и регистрации не открывается в версии kitkat, она открывается в более высокой версии, как ее разрешить –

0

Ваша getCount функция адаптера всегда возвращает это не имеет элементов

Изменить этот

@Override 
public int getCount() { 
    return 0; 
} 

к чему-то вроде этого

@Override 
public int getCount() { 
    if (list1 != null) { 
     return list1.size(); 
    } 
    return 0; 
} 
+0

Спасибо @DEADCODE –

0

попробовать этот

@Override 
       public void onResponse(String response) { 
        try { 
         JSONObject jObject = new JSONObject(response); 
         JSONArray jsonArray = jObject.getJSONArray("cart"); 
         for (int i = 0; i < jsonArray.length(); i++) { 

          JSONObject jbjct = jsonArray.getJSONObject(i); 
          ItemProductList itemListModel = new ItemProductList(); 
          itemListModel.thickness1 = jbjct.getString("thickness"); 
          itemListModel.id1 = jbjct.getString("id"); 
          itemListModel.price1 = jbjct.getString("price"); 
          itemListModel.category1 = jbjct.getString("category"); 
          itemListModel.name1=jbjct.getString("name"); 
          itemListModel.sr_no=jbjct.getString("sr_no"); 
          values1.add(itemListModel); 
          } 
         mAdapter.setList(values1); 
         mAdapter.notifyDataSetChanged(); 
         } 

адаптер класса

public class ItenProductAdapter extends BaseAdapter { 
public static ArrayList<ItemProductList> list1; 
String idValues = ""; 
Context context; 
public static Integer total; 
Bitmap mIcon11 = null; 
ViewHolder holder; 

public ItenProductAdapter(Context context, ArrayList<ItemProductList> list) { 
    super(); 
    this.list1 = list; 
    this.context = context; 
} 

public void setList(ArrayList<ItemProductList> list){ 
    this.list1 = list; 
} 


@Override 
public int getCount() { 
    return list1.size(); 
} 

@Override 
public Object getItem(int position) { 
    return null; 
} 

@Override 
public long getItemId(int position) { 
    return 0; 
} 
static class ViewHolder { 
    TextView txt_sr_no; 
    TextView txt_thickness; 
    TextView txt_rates; 
} 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    if (convertView == null) { 

     holder=new ViewHolder(); 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.inflate(R.layout.product_list_item, null); 

     holder.txt_sr_no= (TextView) convertView.findViewById(R.id.txt_sr_no); 
     holder.txt_thickness= (TextView) convertView.findViewById(R.id.txt_thickness); 
     holder.txt_rates= (TextView) convertView.findViewById(R.id.txt_rates); 

     convertView.setTag(holder); 


    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 
    holder.txt_sr_no.setText(list1.get(position).sr_no+")"); 
    holder.txt_thickness.setText(""+ list1.get(position).thickness1); 
    holder.txt_rates.setText("RS "+list1.get(position).price1); 




    return convertView; 
    } 
} 
+0

, так что ваша проблема отсутствует mAdapter.notifyDataSetChanged() и адаптер getCount() всегда возвращается 0 ; –

+0

И этот список1 никогда не обновляется ... Он устанавливается как пустой ArrayList ... –

+0

... ok. обновить ответ. check plz –

0

Попробуйте это

onCreate 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_product_list); 
    list_productlist = (ListView) findViewById(R.id.list_productlist); 
    category=getIntent().getStringExtra("category"); 
    name1=getIntent().getStringExtra("name"); 
    loadJSON(); 

} 

Тогда onResponse

@Override 
       public void onResponse(String response) { 
        try { 
         JSONObject jObject = new JSONObject(response); 
         JSONArray jsonArray = jObject.getJSONArray("cart"); 
         for (int i = 0; i < jsonArray.length(); i++) { 

          JSONObject jbjct = jsonArray.getJSONObject(i); 
          ItemProductList itemListModel = new ItemProductList(); 
          itemListModel.thickness1 = jbjct.getString("thickness"); 
          itemListModel.id1 = jbjct.getString("id"); 
          itemListModel.price1 = jbjct.getString("price"); 
          itemListModel.category1 = jbjct.getString("category"); 
          itemListModel.name1=jbjct.getString("name"); 
          itemListModel.sr_no=jbjct.getString("sr_no"); 
          values1.add(itemListModel); 
         } 
        //Check if list is empty or not 
        if(values1.size()>0){ 
        mAdapter= new ItenProductAdapter(context,values1); 
        list_productlist.setAdapter(mAdapter); 
        } 


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

Могу ли я сделать пару правки? Мне всегда нравится иметь метод «updateData» в моих адаптерах (тогда они вызывают «notifyDataSetChanged». Таким образом, вы также можете позже загрузить «loadJson» и обновить страницу без необходимости создания нового адаптера –

+0

да, вы можете просто вызвать notifydatasetChanged в нем –

+0

@quick ученик У меня проблема в моем приложении, что активность входа и регистрации не открывается в версии kitkat, она открывается в более высокой версии, как ее разрешить. –

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