我创建了一个列表视图,其中包含从每个项目中的Mysql数据库中提取的多个值:
list = json.getJSONArray(TAG_CUST_TABLE);
// looping through All Products
for (int i = 0; i < list.length(); i++) {
JSONObject c = list.getJSONObject(i);
// Storing each json item in variable
table = c.getString(TAG_TABLE);
String area = c.getString(TAG_AREA);
String user_name = c.getString(TAG_USER_NAME);
String city = c.getString(TAG_CITY);
HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_TABLE, table);
map.put(TAG_AREA, area);
map.put(TAG_USER_NAME, user_name);
map.put(TAG_CITY, city);
QueueList.add(map);
}
} else {
//do something
}
} catch (JSONException e) {
e.printStackTrace();
}
//return "success";
return null;
}
protected void onPostExecute(String file_url) {
// updating UI from Background Thread
runOnUiThread(new Runnable() {
public void run() {
ListAdapter adapter = new SimpleAdapter(CustTable.this, List,
R.layout.cust_queue_list_view, new String[] { TAG_TABLE, TAG_AREA, TAG_USER_NAME, TAG_CITY},
new int[] { R.id.table, R.id.area, R.id.uname, R.id.city});
// updating listview
setListAdapter(adapter);
}
});
}
使用ContextMenu,我正在对listview的所选项目的值“table”执行操作。
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info= (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
switch (item.getItemId()) {
case 1:
UserFunctions userFunction_new = new UserFunctions();
@SuppressWarnings("unused")
JSONObject json_new = userFunction_new.deleteUser(user_id, table);
return(true);
}
return(super.onOptionsItemSelected(item));
}
但是,deleteUser函数始终处理listview中最后一项的“table”值。
有关如何在所选项目的“表格”值上进行此项工作的任何建议都会有所帮助。
另外,我想在每个deleteUser函数之后刷新listview。我尝试使用adapter.NotifyDataSetChanged();
但这不起作用。
答案 0 :(得分:0)
我通过在ContextMenu部分中添加以下代码解决了这个问题(就在switch()行上方:HashMap<String,String> value = (HashMap<String, String>) getListAdapter().getItem(info.position); String table= value.get(TAG_TABLE);