【问题标题】:Getting id of row from Sqlite database through listview通过listview从Sqlite数据库中获取行ID
【发布时间】:2013-12-12 22:53:03
【问题描述】:

我需要从 sqlite 数据库中填充列表视图。现在,当我单击列表中的行时,它将显示在详细视图中。我想从 sqlite 表中获取行 ID,我想将其传递给下一个意图。我该怎么做获取sqlite表的id。

这是我的代码,

  public class Message_Adapter extends ArrayAdapter<Message> {
        Activity activity;
        int layoutResourceId;
        Message user;
        ArrayList<Message> data = new ArrayList<Message>();

        public Message_Adapter(Activity act, int layoutResourceId,
            List<Message> data) {
            super(act, layoutResourceId, data);
            this.layoutResourceId = layoutResourceId;
            this.activity = act;
            this.data = (ArrayList<Message>) data;
            notifyDataSetChanged();
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View row = convertView;
            UserHolder holder = null;

            if (row == null) {
            LayoutInflater inflater = LayoutInflater.from(activity);

            row = inflater.inflate(layoutResourceId, parent, false);
            holder = new UserHolder();
            holder.fromnum = (TextView) row.findViewById(R.id.fromno);
            holder.tonum = (TextView) row.findViewById(R.id.tonum);
            holder.body= (TextView) row.findViewById(R.id.msgbody);
            holder.date = (TextView) row.findViewById(R.id.msgdate);
            holder.delete = (Button) row.findViewById(R.id.btn_delete);
            holder.status = (TextView) row.findViewById(R.id.staty);
            row.setTag(holder);
            } else {
            holder = (UserHolder) row.getTag();
            }
            user = data.get(position);

            holder.delete.setTag(user.getID());
            holder.fromnum.setText(user.getmsgfrom());
            holder.tonum.setText(user.getto());
            holder.body.setText(user.getmsg());
            holder.date.setText(user.getdate());
            holder.status.setText(user.getstatus());

            itemClickListener = new OnItemClickListener() {
                 @Override
                    public void onItemClick(AdapterView<?> arg0, View view,
                            int pos, long arg3) {

                int product = user.getID();

                     // Launching new Activity on selecting single List Item
                     Intent i = new Intent(getApplicationContext(), DetailedMsg.class);
                     // sending data to new activity
                     i.putExtra("Product", product);
                     startActivity(i);

                    }
                    };


            holder.delete.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(final View v) {
                // TODO Auto-generated method stub

                // show a message while loader is loading

                AlertDialog.Builder adb = new AlertDialog.Builder(activity);
                adb.setTitle("Delete?");
                adb.setMessage("Are you sure you want to delete ");
                final int user_id = Integer.parseInt(v.getTag().toString());
                adb.setNegativeButton("Cancel", null);
                adb.setPositiveButton("Ok",
                    new AlertDialog.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog,
                        int which) {
                        // MyDataObject.remove(positionToRemove);
                        DatabaseHandler dBHandler = new DatabaseHandler(
                            activity.getApplicationContext());
                        dBHandler.Delete_Contact(user_id);
                       InboxActivity.this.onResume();

                    }
                    });
                adb.show();
            }

            });
            return row;

        }



        }
        class UserHolder {
            TextView fromnum;
            TextView tonum;
            TextView body;
            TextView date;
            TextView status;
            Button delete;
        }

【问题讨论】:

    标签: android sqlite listview row populate


    【解决方案1】:

    long arg3 是 ID。所以这应该工作:

         .....
    
         i.putExtra("idInDB", arg3);
    
         .....
    

    【讨论】:

    • 你可以在我的代码中看到 msgid 是我从 db 获得的 id...我无法在 for 循环之外使用它
    • @Jolly 为什么不能在循环之外使用它?数据库中的 ID 不会改变。
    猜你喜欢
    • 2014-05-20
    • 1970-01-01
    • 2017-01-16
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多