首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >onItemClick获取数组上项目的ID或名称

onItemClick获取数组上项目的ID或名称
EN

Stack Overflow用户
提问于 2015-07-22 18:35:58
回答 2查看 480关注 0票数 2

我有一个数组:

代码语言:javascript
复制
<string-array name="menu_array">
    <item name="home" >Home</item>
    <item name="new" >New</item>
    <item name="history" >History</item>
    <item id="categories" >Categories</item>
    <item id="store" >Store</item>
    <item id="configs" >Configurations</item>

我有一个:

代码语言:javascript
复制
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        mDrawerLayout.closeDrawer(mDrawerList);

        Toast.makeText(SlideMenuActivity.this, "selecionado: " +  
        switch (position) {
            case 0:
                break;...

我想要的是:我希望能够使用单击项目的id或名称,而不是位置。但是为什么呢?因为每次我改变数组的顺序,我也必须改变开关大小写。我不能使用项的值(Home,New,.),因为它也会根据语言变化。

代码语言:javascript
复制
<string-array name="menu_array">
    <item name="home" >Home</item>
    <item name="new" >Novo</item>
    <item name="history" >Historico</item>
    <item id="categories" >Categorias</item>
    <item id="store" >Loja</item>
    <item id="configs" >Configuracoes</item>

有什么帮助吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-22 19:02:29

一种解决方案可以使用JSONObject。例如。

代码语言:javascript
复制
  <string-array name="menu_array">
    <item name="home">{"id": 1, "name": "Home"}</item>
    <item name="new" >{"id": 2, "name": "New"}</item>
    <item name="history" >{"id": 3, "name": "History"}</item>
   ....
  </string-array>

然后,您必须检索它,解析JSON,并使用一个小对象包装信息:

代码语言:javascript
复制
 public static class Info {
   public  int id;
   public String name;

   @Override
   public String toString() {
      return name;
   }
 }

String[] array = getResources().getStringArray(R.array.menu_array);
ArrayList<Info> dataset = new ArrayList<>();
for (String s : array) {
    JSONObject jObj = new JSONObject(s);
    Info info = new Info();
    info.id = jObj.optInt("id");
    info.name =  jObj.optInt("name");
    dataset.add(info);
}

然后,您必须更改适配器以处理Info实例。当您按下某项时,在您的onItemClick中,您可以轻松地在

代码语言:javascript
复制
Info info = (Info) parent.getItemAtPosition(position);

然后您可以在switch on info.id

票数 2
EN

Stack Overflow用户

发布于 2015-07-22 18:50:48

如果要在getView方法中扩展Adapter类,可以为正在创建的每个视图设置标记,并且onItemClick方法中的view参数返回相同的视图,您可以getTag并检查您想要的任何内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31571338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档