gpt4 book ai didi

android - 使用带有 ArrayAdapter 而不是 ArrayAdapter 的 Android AutoCompleteTextView

转载 作者:IT老高 更新时间:2023-10-28 22:04:35 24 4
gpt4 key购买 nike

我想在我的 android 应用程序中使用 AutoCompleteTextView。我知道如何将它与简单的字符串数组一起使用,但我希望 AutoCompleteTextView 使用对象列表来执行完成。我的代码如下:

Activity 代码

public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.search);

initialize();
ArrayAdapter<Student> adapter = new ArrayAdapter<Student>(this,
R.layout.dropdown_list_item, GetAllStudentsList());

searchBox.setAdapter(adapter);
searchBox.setThreshold(THRESHOLD_VALUE);
searchBox.setTextColor(Color.BLACK);
}

searchBox.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> adapterView, View view,
int position, long arg3) {
//Here i will grab the Student object that user selected from drop-down

}

});

public ArrayList<Movies> GetAllStudentsList() {

//This method returns a ArrayList of <Student> type objects
}

学生类对象包含关于学生的信息,即ID,NAME,ADDRESS,MARKS

我知道 AutoCompleteTextView 需要一个字符串类型对象的数组来执行搜索操作。在我的情况下,我希望 AutoCompleteTextView 使用我的 ArrayList 来根据学生对象字段 NAME 执行完成。我不知道应该如何指定 AutoCompleteTextView 使用Student 对象的 NAME 字段。请帮助我提供任何链接或小示例。

谢谢

最佳答案

两种方式:

  1. 覆盖 toString()Student类并使其返回 name .可以通过以下代码获取选中的对象:

     public static class Student {

    private String name;

    public Student(String name) {
    this.name = name;
    }

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

    }

    AutoCompleteTextView tv = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);
    final ArrayList<Student> list = new ArrayList<MainActivity.Student>();
    list.add(new Student("Viru"));
    list.add(new Student("Gauti"));
    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();
    }
    });
  2. 实现自定义适配器(通过扩展 BaseAdapter 类或 ArrayAdapter<Student> 类)查看本教程:http://www.ezzylearning.com/tutorial.aspx?tid=1763429

关于android - 使用带有 ArrayAdapter<Objects> 而不是 ArrayAdapter<Strings> 的 Android AutoCompleteTextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13063849/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com