如何在上下文菜单中获取行值

时间:2013-01-08 10:05:20

标签: android android-intent android-contextmenu

  

可能重复:
  How to Get Row values in Context menu using cursor?

我创建了ContextMenu并使用了以下代码:

    public boolean onContextItemSelected(MenuItem item){

            switch(item.getItemId())
            {

            case R.id.Show_Note:

                 //AdapterView.AdapterContextMenuInfo info= (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();

                 Intent i=new Intent(this, ShowNote.class);
                    Cursor c = (Cursor) getListView().getItemAtPosition(position);
                    int item_id = c.getInt(0);
                    i.putExtra("item_id", item_id );
                    startActivity(i);

                break

每按一次列表项,返回第一行值。请建议,如何获得按行值。

2 个答案:

答案 0 :(得分:0)

我认为您必须将光标移动到指定位置。在从中获取数据之前。

c.moveToPosition(position);

在您的代码中添加此行,让我知道发生了什么......

您的代码类似于:

Intent i = new Intent(this, ShowNote.class);
Cursor c = (Cursor) getListView().getItemAtPosition(position);
c.moveToPosition(position); // This line need to be added here 
int item_id = c.getInt(0);
i.putExtra("item_id", item_id );
startActivity(i);

答案 1 :(得分:0)

如何设置位置?

为了获得列表视图中的位置,您可以将以下两行添加到项目选择方法的开头:

  public boolean onContextItemSelected(MenuItem item) {
        AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
        int position = info.position;

        switch(item.getItemId())
                {

                case R.id.Show_Note:

                     //AdapterView.AdapterContextMenuInfo info=
                     (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();

                     Intent i=new Intent(this, ShowNote.class);
                        Cursor c = (Cursor) getListView().getItemAtPosition(position);
                        int item_id = c.getInt(0);
                        i.putExtra("item_id", item_id );
                        startActivity(i);

                    break
    }