我正在使用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();
}
答案 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();
}