我有一个列表视图,从sql数据库获取信息,我已设置OnItemLongClickListener

时间:2014-09-01 10:01:01

标签: android mysql android-listview

public void ListDrwaer() {
     String outPut = "";
  List<Map<String, String>> dataList = new ArrayList<Map<String, String>>();

  try {
   JSONObject jsonResponse = new JSONObject(jsonResult);
   JSONArray jsonMainNode = jsonResponse.optJSONArray("details");

   for (int i = 0; i < jsonMainNode.length(); i++) {
    JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);    
        String desc = jsonChildNode.optString("saved_desc");
        String saved_pw = jsonChildNode.optString("saved_pw");
        String user_names = jsonChildNode.optString("user_names");
        number = jsonChildNode.optInt("num_saved");   

        outPut =number+" User name: "+user_names+"\nPassword: "+saved_pw+"\nDescription: "+desc+"\n";           
    dataList.add(createDataList("users", outPut));
   }

listView.setOnItemLongClickListener(new OnItemLongClickListener() {
    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view,
            int position, long id) {

        String data =  (String) ((TextView)view).getText();

        Toast.makeText(getApplicationContext(), "Edit data at Id\n"+number, Toast.LENGTH_SHORT).show();

        ConfirmBox(data, position);

        return false;
    }
});

  } catch (Exception e) {     
      //Go to add activity if no data to display
      startActivity(new Intent(getApplicationContext(), Add.class).putExtra("data", "no"));   
  }

  SimpleAdapter simpleAdapter = new SimpleAdapter(this, dataList,
    android.R.layout.simple_list_item_1,
    new String[] { "users" }, new int[] { android.R.id.text1 });
  listView.setAdapter(simpleAdapter);

 }

private HashMap<String, String> createDataList(String name, String value) {
  HashMap<String, String> dataNo = new HashMap<String, String>();
  dataNo.put(name, value);
  return dataNo;
 }

现在我想要的是,当我长按一个项目时,我希望看到数据库中该项目的数量的祝酒词。

list

我有一个字段&#39; num_saved&#39;在mysql数据库中,只要用户将数据添加到数据库,该数据库就会自动递增。当我从数据库中检索数据时,每一行在字段“num_saved”中都有一个唯一值。

我想要的是当长按列表视图上的任何项目时,会看到唯一的号码num_saved。 我已经编辑过并且还根据其他人的要求添加了适配器代码。 long press dialog

edit dialog

1 个答案:

答案 0 :(得分:1)

你需要很多代码才能让它正常工作,正如我所说的那样正确。

原因:您正在将数据JSON解析为字符串,num_saved将保存在number变量中,该变量连接到otuput

  outPut =number+" User name: "+user_names+"\nPassword: "+saved_pw+"\nDescription: "+desc+"\n";

顺便说一句,我不能仅仅通过String说出那个ID号是什么。以下代码为您的问题快速修复,因为我发现您的代码需要更多优化和更正。

 String data =  (String) ((TextView)view).getText();
 int num=Integer.parseInt(data.subString(0,1)); //<= Here is your number
 Toast.makeText(getApplicationContext(), "Edit data at Id\n"+number, Toast.LENGTH_SHORT).show();

使用num您可以执行操作,显示对话框并执行其他必要选项