カスタムカーソルアダプタを使用して、データベースからリストビューに読み込んでいます。リストビューには、データベースの各エントリの詳細が表示されます。リストアイテムをクリックすると、リストビューに表示されていないそのレコードの他の詳細を表示する詳細ページを開きたいです。私はそれを理解することはできません。
MainActivityにあるカーソル作成とアダプター作成のコードスニペットを添付しました。また、個別のcustomAdapterクラスと詳細ページ用のクラスがあります。
主な活動:
public class MainActivity extends ListActivity {
....
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
...
}
private void fillList() {
ListView lv = getListView();
Cursor c = db.getData();
startManagingCursor(c);
CustomCursorAdapter adapter = new CustomCursorAdapter(getApplicationContext(), c);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
Intent k = new Intent(MainActivity.this, ProductDetails.class);
}
});
}
}
CustomCursorAdapter:
public class CustomCursorAdapter extends CursorAdapter {
public CustomCursorAdapter(Context context, Cursor cursor) {
super(context, cursor);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(R.layout.list_entry, parent, false);
bindView(v, context, cursor);
return v;
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView txtvw1 = (TextView)view.findViewById(R.id.prodcode_entry);
txtvw1.setText(cursor.getString(cursor.getColumnIndex(ProdDB.KEY_PRODCODE)));
TextView txtvw2 = (TextView)view.findViewById(R.id.prodtype_entry);
String ptype = (cursor.getString(cursor.getColumnIndex(ProdDB.KEY_PRODTYPE)));
txtvw2.setText(ptype.substring(0, 1));
TextView txtvw3 = (TextView)view.findViewById(R.id.prodcat_entry);
String cat = (cursor.getString(cursor.getColumnIndex(ProdDB.PRODCAT)));
txtvw3.setText(cat.substring(0, 2));
TextView txtvw4 = (TextView)view.findViewById(R.id.prodcost_entry);
float price = (cursor.getFloat(cursor.getColumnIndex(ProdDB.PRODPRICE)));
txtvw4.setText(Float.toString(price));
TextView txtvw5 = (TextView)view.findViewById(R.id.prodSup_entry);
txtvw5.setText(cursor.getString(cursor.getColumnIndex(ProdDB.SUPPLIER)));
}
}
ProdDetails
public class ProductDetails extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.product_details);
}
}
db.getData()-ProdDBから
public Cursor getData() {
String[] columns = new String[] {KEY_ROWID,
KEY_PRODCODE,
KEY_PRODNAME,
KEY_PRODTYPE,
KEY_PRODCAT,
KEY_PRODPRICE,
KEY_PRODRRP,
KEY_PRODSUPPLIER,
KEY_NOTES};
return db.query(DB_TABLE, columns, null, null, null, null, null);
}