0

各 ListItem のレイアウトに 2 つの TextView がある ListView があります。ListItem がクリックされたときに、これらの TextViews の値を別のアクティビティに渡したいと思います。私の試みはすべて失敗したので、どうすればそれを行うことができますか? R.id.text1 と R.id.text2 の値である SQLite ROW_ID を渡すにはどうすればよいですか?

    Cursor cursor = database.getAllNames();
    adapter = new SimpleCursorAdapter(this, R.layout.listrow, cursor,
            new String[] { Database.KEY_DATE , Database.KEY_NAME },
            new int[] {R.id.text1, R.id.text2}, 0);

    listView = (ListView) findViewById(R.id.list);
    listView.setAdapter(adapter);

    listView.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Intent intent = new Intent(SendingData.this, ReceivingData.class);
            intent.putExtra("id", id); //this should pass the SQLite ROW_ID
            intent.putExtra("date", date); //this should pass the value of R.id.text1
            intent.putExtra("name", name); //this should pass the value of R.id.text2
            startActivity(intent);  
        }
        });
4

2 に答える 2

0

これを行うには、カーソルにアクセスせずにビューから直接データを取得します(そして、すでに行っているようにonItemClickメソッドで渡された行IDを使用します)。

listView.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

        TextView text1 = (TextView) view.findViewById(R.id.text1);
        TextView text2 = (TextView) view.findViewById(R.id.text1);
        String date = text1.getText().tostring();
        String name = text2.getText().tostring();

        Intent intent = new Intent(SendingData.this, ReceivingData.class); 
        intent.putExtra("id", id); //this should pass the SQLite ROW_ID 
        intent.putExtra("date", date); //this should pass the value of R.id.text1 
        intent.putExtra("name", name); //this should pass the value of R.id.text2 
        startActivity(intent);   
    } 
}); 
于 2012-08-26T18:15:21.210 に答える
0

これを使用して、SQLLite データベースからデータを取得します。

cursor.getString(c.getColumnIndex(Database.columns[i])) // i is the index of the column whose details you want to fetch

そして、intent.putExtra でパラメーターとして渡すことができます。

listView.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Cursor cursor = null;
            cursor = (Cursor) parent.getItemAtPosition(position);
            Intent intent = new Intent(SendingData.this, ReceivingData.class);
            intent.putExtra("id", cursor.getInt(cursor.getColumnIndex(Database.columns[0]))); //assuming that the first column in your database table is the row_id
            intent.putExtra("date", cursor.getString(cursor.getColumnIndex(Database.columns[1]))); //assuming that the second column in your database table is the text1
            intent.putExtra("name", cursor.getString(cursor.getColumnIndex(Database.columns[2]))); //assuming that the third column in your database table is the text2
            startActivity(intent);  
        }
        });
于 2012-08-26T18:03:18.840 に答える