tototan
unread,Aug 18, 2012, 1:17:32 AM8/18/12Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
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);
}
}