22

我有一个数组(array1 with StatesAutoCompleteTextview,我用array1填充它。当我从中选择值时,AutocompleteTextViewstate从 AutoCompleteTextView 下拉列表中选择

我想要的是从我选择的array1中获取项目的位置。 我试过的是.
OnClickEventAutocompelteTextView

STATE.setOnItemClickListener(new OnItemClickListener(){

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long rowId) {
        String selection = (String) parent.getItemAtPosition(position);
        String num = selection;
    }
});

它给了我从下拉列表中选择的值,但我想获取position of the valuein array1。例如,我有一个大小为 4 的数组,例如 array1 = {A,B,C,D},如果我选择 B,它应该返回我在数组中的 B 位置,即 2。

我希望我说清楚了。提前致谢。

4

5 回答 5

31

使用中的位置变量onItemClick

STATE.setOnItemClickListener(new OnItemClickListener(){

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long rowId) {
        String selection = (String) parent.getItemAtPosition(position);
        int pos = -1;

        for (int i = 0; i < yourarray.length; i++) {
            if (yourarray[i].equals(selection)) {
                pos = i;
                break;
            }
        }
        System.out.println("Position " + pos); //check it now in Logcat
    }
});
于 2012-11-29T08:43:11.730 回答
3

使用列表而不是数组。为 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 ;)
     }
});
于 2014-11-18T08:58:56.257 回答
0
            @Override
            public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
            {
                TextView txtvw=(TextView) view;
                String str=txtvw.getText().toString();
                int index = contactNames.indexOf(str);
            } 
于 2015-05-14T05:30:05.967 回答
0
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 来自数据库,我们可以使用它

于 2015-07-07T06:59:30.497 回答
-2

您可以在 clickItem 侦听器中找到父字符串。在这种情况下,OSchools 是自定义的 ArrayList。

Object item = parent.getItemAtPosition(position);
for(OSchools d : data){
Log.e("name",d.getName());
String name = d.getName();
if(d.getName() != null && name.contains(item.toString())){
       ID = d.getID();
}
于 2018-11-22T16:34:49.623 回答