我从android json

时间:2017-08-01 18:02:47

标签: php android mysql json

我正在使用Android Php Mysql制作一个在线应用程序。我已经使用产品名称的产品填充了listview。但我希望在点击它时获得这些项目的ID。但是当我解析android中的“products_id”时。我收到的只是最后一个Product_ID。 这是我的代码:

   try {
                JSONObject obj = new JSONObject(aVoid);
                JSONArray array = obj.getJSONArray("server_response");

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


                    JSONObject obj2 = array.getJSONObject(i);
                    final int product_id = obj2.getInt("product_id");
                    String product_name = obj2.getString("product_name");
                    arr.add(product_name);
                    ArrayAdapter adapter = new ArrayAdapter(ViewProduct.this, android.R.layout.simple_list_item_1, arr);
                    li_pro.setAdapter(adapter);

                   li_pro.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                       @Override
                       public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {

                       position = product_id;
                          // i = product_id;
                           Toast.makeText(getApplicationContext(), "",Toast.LENGTH_LONG).show();
                       }
                   });
                }

            } catch (Exception ex) {
                Toast.makeText(ViewProduct.this, "" + ex, Toast.LENGTH_LONG).show();
            }

1 个答案:

答案 0 :(得分:0)

您正在为for循环添加适配器,因此循环中的每个项目都在设置中         适配器,这就是为什么你只获得项目。         for循环后设置Adpater将解决如下问题。

try {
       JSONObject obj = new JSONObject(aVoid);
       JSONArray array = obj.getJSONArray("server_response");

       for (int i = 0; i < array.length(); i++) {
           JSONObject obj2 = array.getJSONObject(i);
           final int product_id = obj2.getInt("product_id");
           String product_name = obj2.getString("product_name");
           arr.add(product_name);
       }
       ArrayAdapter adapter = new ArrayAdapter(ViewProduct.this, android.R.layout.simple_list_item_1, arr);
       li_pro.setAdapter(adapter);

       li_pro.setOnItemClickListener(new AdapterView.OnItemClickListener() {
               @Override
               public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {

                   position = product_id;
                   // i = product_id;
                   Toast.makeText(getApplicationContext(), "",Toast.LENGTH_LONG).show();
               }
       });

} catch (Exception ex) {
    Toast.makeText(ViewProduct.this, "" + ex, Toast.LENGTH_LONG).show();
}