我的代碼:如何在Android ListView中爲每個項目設置唯一的ID?
JSONArray jArray = new JSONArray(result);
if(jArray.length() > 0) {
for (int i = 0; i < jArray.length(); i++) {
JSONObject json_data = jArray.getJSONObject(i);
expense_id = json_data.getInt("expense_id");
client_name = json_data.getString("client_name");
expense_type = json_data.getString("expense_type");
expense_amount = json_data.getInt("expense_amount");
listItems.add(i, expense_id + "- " + client_name + " | " + expense_type + " : Rs. " + String.valueOf(expense_amount));
}
adapter=new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,listItems);
ListView list_expenses = (ListView) findViewById(R.id.list_expenses);
list_expenses.setAdapter(adapter);
registerForContextMenu(list_expenses);
list_expenses.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, final View view,int position, long id) {
final String item = (String) parent.getItemAtPosition(position);
final int extra_expense_id = Integer.parseInt(item.split("-")[0]);
Intent intent = new Intent(HomeScreenActivity.this, ViewExpenseActivity.class);
intent.putExtra(EXTRA_EXPENSE_ID, extra_expense_id);
startActivity(intent);
}
});
}
當我使用onItemClick聽衆,我想送「expense_id」到下一個活動。但是,如何爲每個項目設置單獨的'expense_id'?
在我的代碼中,我在每個項目中都添加了expense_id,然後將它分開以獲取id。但這是一個不好的方法。任何方式我可以爲每個listItem設置一個隱藏的ID屬性?我也試過 - listItem.add(expense_id,「String object here」);這樣我就可以得到等於expense_id的索引。 但由於ArrayList的這項工作必須從指數0開始
可能的答案:
1 - 用戶自定義適配器:不,我已經正確實施ArrayAdapter。
2 - 使用setTag,getTag?這適用於整個ListView對象。它不適用於單個項目。
從你的代碼我可以看到你在添加到你的列表之前使用字符串,所以爲什麼你不管理另一個列表只有id,當用戶點擊列表中的項目獲取位置並獲得id。你已經做了不好的代碼,所以添加更多。 –
[This](http://stackoverflow.com/questions/6680430/get-unique-results-from-json-array-using-jquery)可能會幫助你。 – Cai