リストビューに配置したボタンのクリックリスナーについて

53 views
Skip to first unread message

tototan

unread,
Aug 18, 2012, 1:17:32 AM8/18/12
to android-deve...@googlegroups.com
リストビューに配置したボタンのクリックリスナーについて
関連するクラスの構成は以下のようになります。

BizCard:データ参照用のクラス
CardActivity:それぞれの行に画像とnameと電話ボタンを表示する一覧リストビュー(追加、削除機能あり、ひらがな昇順表示)
BizCardDao:クエリーを使ったデータアクセス用のクラス
ShowAcitivity:CardActivityから遷移する詳細表示用のクラス

画像データはSDカードに保存して、他のデータはdbに保存する仕様になっています。

CardActivityのonCreateでSimpleCursorAdapterを使いdbと接続してデータを昇順表示して、詳細画面(ShowAcitivity)へ遷移するところまではできたのですが、電話ボタンをタップした時そのレコードを特定するrow_idの取得方法がどうしてもわかりません。
ご存知の方がいらっしゃいましたらご教授をお願いいたします。

【ShowAcitivity.java】
package com.me.tototan.yorunote5;

import java.util.List;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

import com.me.tototan.yorunote5.db.BizCard;
import com.me.tototan.yorunote5.db.BizCardDao;
import com.me.tototan.yorunote5.db.DatabaseOpenHelper;

public class CardActivity extends Activity implements OnItemClickListener {
    private ListView listView = null;
    protected SQLiteDatabase db;
    private ArrayAdapter<BizCard> arrayAdapter = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        db = (new DatabaseOpenHelper(this)).getWritableDatabase();
        listView = (ListView) findViewById(R.id.list);

        Cursor c = db.query( BizCard.TABLE_NAME, new String[]
            {"_id",BizCard.COLUMN_PERSON_NAME, BizCard.COLUMN_ORGANIZATION_NAME},
            null, null, null, null, BizCard.COLUMN_ORGANIZATION_NAME);
        startManagingCursor(c);
        String[] from = {BizCard.COLUMN_PERSON_NAME};
        int[] to = {R.id.filename};
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,R.layout.row,c,from,to);

        listView.setAdapter(adapter);

        // リスナの追加
        listView.setOnItemClickListener(this);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        // XMLで定義したmenuを指定する。
        inflater.inflate(R.menu.list, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int itemId = item.getItemId();
        switch (itemId) {
        case R.id.menu_new:
            // 編集画面へ遷移
            Intent registIntent = new Intent(this, RegistActivity.class);
            startActivity(registIntent);
            break;
        }
        return true;
    };


    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {
        ListView listview = (ListView)parent;
        Cursor c2 = (Cursor)listview.getItemAtPosition(position);
        String lt = c2.getString(c2.getColumnIndex("_id"));
        int intLt = Integer.parseInt(lt);
   
        Intent showIntent = new Intent(this, ShowActivity.class);
        showIntent.putExtra("position", intLt);

        startActivity(showIntent);
    }
}
Reply all
Reply to author
Forward
0 new messages