在AutoCompleteTextView addTextChangeListener方法中获取项目位置

时间:2016-01-18 11:24:28

标签: android get position autocompletetextview

我的自定义适配器中有自动填充文本视图。当我在onTextChange监听器中写东西时,我想获得项目位置。我给出了所有物品的位置。请帮我解决这个问题。谢谢!

5 个答案:

答案 0 :(得分:1)

autoCompleteTextView.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long rowId) {
        String selection = (String)parent.getItemAtPosition(position);
        //TODO Do something with the selected text
    }
});

答案 1 :(得分:1)

这是您可以获取在AutoCompleteTextView中输入的Item的位置的方法。但是你必须添加项目的全名,如“apple”或“apples”,然后这段代码将为您提供该特定项目的位置。但如果您的列表中有很多项目,那么它的过程非常昂贵。

public class Test extends AppCompatActivity {

private AutoCompleteTextView autoCompleteTextView;
private List<String> list;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_chintan_test);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    list = new ArrayList<>();
    list.add("Apple");
    list.add("Apples");
    list.add("Banana");
    list.add("Aunt");
    list.add("Orange");

    autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView);
    autoCompleteTextView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list));

    autoCompleteTextView.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            for (String string : list)
                if (string.toLowerCase().equals(s.toString().toLowerCase())) {
                    int pos = list.indexOf(string);
                    Toast.makeText(Test.this, "" + pos, Toast.LENGTH_SHORT).show();
                }
        }

        @Override
        public void afterTextChanged(Editable s) {

        }

    });
}

}

如果此代码可以帮助您,请告诉我。

答案 2 :(得分:0)

使用textwatcher,在活动类中实现它。

@Override
public void afterTextChanged(Editable arg0) {
 // TODO Auto-generated method stub

}

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
 // TODO Auto-generated method stub

}

答案 3 :(得分:0)

您好,请检查是否有问题

AutoCompleteTextView tv = (AutoCompleteTextView)     findViewById(R.id.autoCompleteTextView1);
final ArrayList<Student> list = new ArrayList<MainActivity.Student>();
list.add(new Student("abc"));
list.add(new Student("abc"));
ArrayAdapter<Student> adapter = new ArrayAdapter<MainActivity.Student>(
        this, android.R.layout.simple_dropdown_item_1line, list);
tv.setAdapter(adapter);

tv.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {
        Student selected = (Student) arg0.getAdapter().getItem(arg2);
        Toast.makeText(MainActivity.this,
                "Clicked " + arg2 + " name: " + selected.name,
                Toast.LENGTH_SHORT).show();
    }
});

如需更多检查,您可以从here. ..

开始

答案 4 :(得分:0)

您可以将addTextChangedListener用于此目的

 yourAutoCompleteTextView.addTextChangedListener(new TextWatcher() {

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {

}

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {                

}

@Override
public void afterTextChanged(Editable s) {

} });