所以我的问题是我创建了一个listview并使用一个简单的游标适配器填充它。所以现在当我点击listview上的一个项目时,它会转到另一个活动,它会向我显示我点击的项目的详细信息。解决这个问题的最佳方法是什么?这是我填充列表视图的功能。我究竟应该向下一个活动发送什么?我正在考虑发送位置,但之后无法工作,因为在下一个活动中我将不得不使用位置访问数据库,但这不准确,因为数据库可能会删除行,这可以返回不同的数据行。任何想法都会得到真正的赞赏。
private void populateListView(){
Cursor cursor = myDatabase.getAllData();
String[] fromfieldNames = new String[]{StudentDBOpenHelper.ITEM_NAME_COLUMN};
int[] toViewIDs = new int[] {R.id.textView_itemName};
SimpleCursorAdapter myCursorAdapter;
myCursorAdapter = new SimpleCursorAdapter(getActivity(),
R.layout.indvidualview_layout,cursor,fromfieldNames,toViewIDs,0);
ListView myList = (ListView) getActivity().findViewById(R.id.courseListXML);
myList.setAdapter(myCursorAdapter);
myList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent nextActivity = new Intent(getActivity(), CourseWorkItemActivity.class);
nextActivity.putExtra("Item", position);
startActivity(nextActivity);
}
});
}
答案 0 :(得分:1)
我建议将从光标中提取的数据作为意图附加内容发送。这是一个例子(比你想要的更复杂一点,如Itemclick
我显示一个中间对话框来选择编辑或股票(将产品放入商店的过道)选项。: -
productlist_csr = shopperdb.getProductsAsCursor();
currentpca = new ProductsCursorAdapter(this, productlist_csr, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
productlistview.setAdapter(currentpca);
productlistview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
AlertDialog.Builder okdialog = new AlertDialog.Builder(productlistview_context);
okdialog.setTitle(R.string.productlistentryclicktitle);
okdialog.setMessage(R.string.productlistentryclickmessage001);
okdialog.setCancelable(true);
final int pos = position;
okdialog.setNegativeButton(R.string.standardstockproductlist, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(productlistview_context, AddProductToShopActivity.class);
productlist_csr.moveToPosition(pos);
intent.putExtra("Caller", THIS_ACTIVITY);
intent.putExtra("PRODUCTID", productlist_csr.getLong(ShopperDBHelper.PRODUCTS_COLUMN_ID_INDEX));
intent.putExtra("ProductName", productlist_csr.getString(ShopperDBHelper.PRODUCTS_COLUMN_NAME_INDEX));
intent.putExtra("ProductNotes", productlist_csr.getString(ShopperDBHelper.PRODUCTS_COLUMN_NOTES_INDEX));
startActivity(intent);
dialog.cancel();
}
});
okdialog.setPositiveButton(R.string.standardedittext, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(productlistview_context, ProductAddActivity.class);
intent.putExtra("Caller", THIS_ACTIVITY + "Update");
productlist_csr.moveToPosition(pos);
intent.putExtra("ProductName", productlist_csr.getString(ShopperDBHelper.PRODUCTS_COLUMN_NAME_INDEX));
intent.putExtra("ProductNotes", productlist_csr.getString(ShopperDBHelper.PRODUCTS_COLUMN_NOTES_INDEX));
intent.putExtra("PRODUCTID", productlist_csr.getLong(ShopperDBHelper.PRODUCTS_COLUMN_ID_INDEX));
startActivity(intent);
dialog.cancel();
}
});
okdialog.setNeutralButton(R.string.standardbacktext, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
okdialog.show();
}
});
请注意! ShopperDBHelper.PRODUCTS_COLUMN_?????_INDEX
等于相应列的光标偏移量。我使用意图Extra 来电来通知调用活动的已启动活动(例如,可以从产品,商店或过道调用股票),以便它可以采取相应的行动。
在上面position
用于移动到相应的光标行(但是,我相信这实际上并不需要,因为光标已经定位,但这样做是为了以防万一)。
我也使用自定义光标,但我认为这不应该是一个问题(我从未使用过simpleCursor)。