问题 如何获取在AutoCompleteTextView中选择的文本的索引


AutoCompleteTextView mActv = (AutoCompleteTextView) findViewbyId(R.id.m_actv);
ArrayAdapter<String> AutoCompleteAdapter = new ArrayAdapter<String>(this,
                    R.layout.dropdown_text, Names);
mActv.setAdapter(AutoCompleteAdapter);

名称 是一个String数组。

是否有可能得到 指数 从下拉列表中选择的文本?

谢谢。


5779
2017-11-20 06:25


起源

你找到了解决方案吗? - Accollativo
试试看看 stackoverflow.com/questions/4819813/...
解: stackoverflow.com/questions/4819813/... - Shivang
我认为你的问题的解决方案是 这里.. 核实。 - Shanaka Nuwan


答案:


尝试 AutoCompleteTextView#getListSelection()


5
2017-11-20 06:29



这总是会回来的 -1。哪一个是 ListView.INVALID_POSITION 在您提供的链接中给出。 - Archie.bpgc
这在下拉列表打开时有效,但是你问一个棘手的问题,因为列表(以及索引)根据AutoCompleteTextView的输入而改变...如果 Names 是一个 List<String> 那你可以用 indexOf() 在选择字符串后查找字符串的位置。 - Sam


只需添加 OnItemClickListener (对于点击的项目)或 OnItemSelectedListener(对于使用轨迹球,上/下键选择的项目) AutoCompleteTextView

mActv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View arg1, int pos,
                long id) {
              String item = arg1.getItemAtPosition(pos);
               //your stuff
           }
    });

5
2017-11-20 06:31



是啊。这是我尝试的第一件事。但在这里它给了 位置 从中选择的文本 落下,而不是我用来填充的数组的字符串的索引:( - Archie.bpgc
订单是否保持不变?我的意思是在数组和下拉列表中的列表? - Shashank Kadne
但取决于最初的几个 人物 我输入,下拉列表更改(AutoCompleteTextView的预期行为)。 - Archie.bpgc
现在我遇到了你的问题! - Shashank Kadne
我遇到了同样的问题,我所做的是一个自定义适配器,您可以在其中设置对象而不是字符串,以便您可以访问所选的对象变量。 - user3471194


为AutoCompleteTextView实现onItemClickListener,然后在列表中使用indexOf查找所选项的索引。

actvCity.setOnItemClickListener(new OnItemClickListener() {

     @Override
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
          long arg3) {
          int index = cityNames.indexOf(actvCity.getText().toString());
          // Do Whatever you want to do ;)
     }
});

2
2017-11-18 08:55



AutoCompleteTextView上没有indexOf方法! - aidinMC


Item.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    //// id contains item if from database
                    ItemNoSelected = id;
                }
            });

id来自数据库,我们可以使用它


0
2017-07-07 07:00