【问题标题】:Android: List position from AutoCompleteTextviewAndroid:来自 AutoCompleteTextview 的列表位置
【发布时间】:2014-04-03 13:22:25
【问题描述】:

如何从我从 AutoCompleteTextview 中选择的列表中获取项目的位置?

autoSearch = (AutoCompleteTextView) findViewById(R.id.autoSearch);
    autoSearch.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {

        }
    });
    adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_dropdown_item_1line, mLIST);
    autoSearch.setAdapter(adapter);

使用变量 arg2 只能获得自动完成列表的位置,而不是我的 mLIST 中项目的实际位置。

有没有办法获得实际位置而不是自动完成位置?

【问题讨论】:

  • 你能发布你的列表的样子吗?

标签: android autocompletetextview


【解决方案1】:

我不太确定是否有直接的方法,但知道从列表中选择的项目,您可以使用列表中的 indexOf() 方法知道其在 mLIST 中的位置。

假设每个项目都是唯一的,如果不是,这将不起作用。

【讨论】:

    【解决方案2】:

    这是快速解决方案,恕我直言很懒,但它有效。我假设你有独特的词,不是吗?否则,您将需要制作 customadapter 并为项目使用 setTag()。

    autoSearch.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    
                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                                        long arg3) {
                    Log.d("xxx", "xxx");
    
                    String text = ((TextView) arg1).getText().toString();
                    for(int i=0;i<mLIST.size();i++)
                    {
                        if(mLIST.get(i).contains(text))
                        {
                            int lookingForId = i;
                            Log.d("xxx", "looking for id is " + i);
                            break;
                        }
                    }
                }
            });
    

    【讨论】:

    • 正在考虑走这条路,但我希望有更直接的方法。我列表中的一些项目也有相同的内容。但我可以用这个。我只需要改变我对应用程序的处理方式。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多