5

我有一个包含两列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?

4

4 回答 4

17

您可能应该从适配器获取光标。这样,如果您的光标被替换,您仍然可以获得有效的光标。

Cursor cursor = ((SimpleCursorAdapter) adapterView).getCursor();
cursor.moveToPosition(position);
long categoryId = cursor.getLong(cursor.getColumnIndex(CategoryDataHelper.ID));

或使用"category_id"或任何您的列名称代替CategoryDataHelper.ID.

于 2011-04-05T14:22:55.657 回答
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);
于 2011-08-13T17:12:10.200 回答
1

在 onItemclick 中怎么样:

categoryCursor.moveToPosition(position);

然后从返回的光标中从您的助手那里获取 ID?

于 2011-04-05T14:13:28.910 回答
1

使用SimpleCursorAdapter,该onItemClick函数传入所选项目的数据库 id。所以,解决方案很简单

long category_id = id
于 2016-01-20T01:58:04.940 回答