gpt4 book ai didi

android通过上下文菜单获取 ListView 项

转载 作者:行者123 更新时间:2023-11-29 01:35:18 25 4
gpt4 key购买 nike

在我的应用程序中,我在 Listview 上注册了 ContextMenu我想被点击 Listview按上下文菜单的项目。例如,如果我在 ListView 中有两行具有这种结构:

public class StructReceiveSms{

public int userID;
public String username;
}

我的适配器可以在 ListView 中显示用户名。现在我在下面的代码中可以在 ListView 上定义上下文菜单:

public class FragmentSmsReceiveMaster extends Fragment {

private static final Boolean DEBUG = true;
public ArrayAdapter adapter;
private ArrayList<StructReceiveSms> receiveSmsArray;
.
.
.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
.
.
.
smsView = (ListView) view.findViewById(R.id.listView);
smsView.setAdapter(adapter);
registerForContextMenu(smsView);
.
.
.
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
String[] menuItems = getResources().getStringArray(R.array.SmsMasterContextMenu);
for (int i = 0; i < menuItems.length; i++) {
menu.add(Menu.NONE, i, i, menuItems[i]);
}
}


@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
int menuItemIndex = item.getItemId();
String listItemName = adapter.getItem(info.position) + "";

/* GET CLICKED LISTVIEW ITEM AFTER CHOOSE CONTEXTMENU MENU ITEMS */

Toast.makeText(G.currentActivity, listItemName, Toast.LENGTH_SHORT).show();
return true;
}
}

现在单击上下文菜单项后,我可以通过 menuItemIndex 获取用户单击的内容但我无法得到哪个ListviewonContextItemSelected 中的项目功能。例如,在第一个项目上打开上下文菜单我可以获得 userIDusername并展示它。怎么办,谢谢

最佳答案

由于您的适配器的数据列表由 StructReceiveSms 对象组成,因此 onContextItemSelected() 中的 adapter.getItem(info.position) 调用将返回上下文菜单为其打开的列表项,但需要将其转换为 StructReceiveSms 类型。从这里,你可以得到你想要的userIDusername

public boolean onContextItemSelected(MenuItem item)
{
...
StructReceiveSms listItem = (StructReceiveSms) adapter.getItem(info.position);
String selectedName = listItem.username;
int selectedId = listItem.userID;
...
}

这是假设您没有覆盖 Adapter 的 getItem() 方法以返回其他内容,但我想如果您有的话,您会展示它。

关于android通过上下文菜单获取 ListView 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28599737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com