我有一个包含两列category_id
和name
的类别表。我创建了一个名为CategoryDataHelper
的数据助手类。我有一个名为getCategoryCursor()
的帮助程序类的方法,它从类别表中获取id和名称并返回游标。使用该游标,我使用SimpleCursorAdapter
来显示类别列表。它工作正常。
public class Categories extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
categoryDataHelper = new CategoryDataHelper(getApplicationContext());
Cursor categoryCursor = categoryDataHelper.getCategoryCursor();
ListAdapter adapter = new SimpleCursorAdapter (
this,
android.R.layout.simple_list_item_1,
categoryCursor,
new String[] { CategoryDataHelper.NAME },
new int[] {android.R.id.text1});
// Bind to our new adapter.
setListAdapter(adapter);
list = getListView();
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Here I want the category_id
}
});
}
}
现在我要实现一个OnItemClickListener
并向所选类别的category_id
发送一个Intent。如何在onItemClick()
方法中获取ID?
答案 0 :(得分:17)
您可能应该从适配器获取光标。这样,如果你的光标被替换,你仍然会得到一个有效的光标。
Cursor cursor = ((SimpleCursorAdapter) adapterView).getCursor();
cursor.moveToPosition(position);
long categoryId = cursor.getLong(cursor.getColumnIndex(CategoryDataHelper.ID));
或使用"category_id"
或列的任何名称代替CategoryDataHelper.ID
。
答案 1 :(得分:3)
谢谢扎克,我可以用你的帖子来解决......非常好! ... 我将参数从活动发送到另一个参数:
Intent myIntent = new Intent(Clientes.this, Edc.class);
Cursor cursor = (Cursor) adapter.getItem(position);
myIntent.putExtra("CLIENTE_ID", cursor.getInt(cursor.getColumnIndex("_id")));
startActivity(myIntent);
在其他活动(EDC)....我得到参数:
int _clienteId = getIntent().getIntExtra("CLIENTE_ID", 0);
答案 2 :(得分:1)
在onItemclick上怎么样:
categoryCursor.moveToPosition(position);
然后从返回的游标中获取助手的ID?
答案 3 :(得分:1)
使用SimpleCursorAdapter
,onItemClick
函数会传入所选项目的数据库ID。所以,解决方案很简单
long category_id = id