0

我一直在尝试使用上下文菜单从列表中的一行中获取文本。到目前为止,我能够使用 row.xml 文件中的 id 获取文本名称。但是,当我在列表中选择另一行时,它将在列表的第一行中返回相同的名称,而不是我选择的名称。

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

    if(item.getTitle()=="Get")
    {
        TextView textView = (TextView) this.findViewById(R.id.names); 
        String text = textView.getText().toString(); 

        //Then pass value retrieved from the list to the another activity 
    }
 }

行.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView 
    android:id="@+id/names"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    />

<TextView 
    android:id="@+id/pNumbers"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    />
</LinearLayout>
4

2 回答 2

2

这不是正确的做法。您应该使用AdapterContextMenuInfo.position来获取列表中数据的索引,然后将该数据传递给新的 Activity。

AdapterContextMenuInfo info = (AdapterContextMenuInfo)item.getMenuInfo();    
switch(item.getItemId()) { // using the id is the proper way to determine the menu item
    case R.id.menu_get:
        Object data = mListAdapter.getItem(info.position);
        // do something interesting with the data
        return true;
}
于 2013-03-25T15:32:18.343 回答
0

你测试过 info.position

然后从适配器位置您可以检索所有列表项数据。

于 2013-03-25T15:31:29.727 回答