首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OnItemClick到AutoCompleteTextView

OnItemClick到AutoCompleteTextView
EN

Stack Overflow用户
提问于 2014-01-14 09:33:04
回答 2查看 629关注 0票数 0

我有一个问题,在项目点击到AutoCompleteTextView。使用下面的代码,我不会像在SQLite数据库中那样获得单击项的id。假设我单击AutoComplete下拉列表中显示的第二项。我从id 2中的数据库中获得值,而不是数据库中id不同的选定项的值。我确信我的实现onItemClick是错误的。我希望有人能帮我解决这个问题。我很久以来一直对此感到不安。

我的守则:

代码语言:javascript
复制
  SearchTrainee = (AutoCompleteTextView) findViewById(R.id.search);

    trainees = new ArrayList<HashMap<String, String>>();
    trainees = DatabaseHelper.getInstance().getStoredTrainees();

    String str[] = new String[trainees.size()];
    for (int i = 0; i < trainees.size(); i++) {
        str[i] = trainees.get(i).get("display");
    }

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            R.layout.search_autocomplete, str);
    SearchTrainee.setAdapter(adapter);
    SearchTrainee.setOnItemClickListener(this);
}

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


        System.out.println("Last name: " + trainees.get(arg2).get("last_name"));
         //currentTrainee.setFirstname(trainees.get(arg2).get("first_name"));
        // currentTrainee.setCompany(trainees.get(arg2).get("company"));
        // System.out.println(currentTrainee.getFirstname());


}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-14 09:56:44

问题是,自动完成视图将过滤显示的内容,使其与初始数组不匹配,这意味着您不能依赖onItemClick中给定的索引搜索trainee数组。

为了限制代码更改的数量,下面是您可以做的事情:

使用如下所示的SimpleAdapter:

代码语言:javascript
复制
SimpleAdapter adapter = new SimpleAdapter(this, trainee, 
        R.layout.search_autocomplete, new String[] {"display"}, 
        new int[] {R.id.text});
 // R.id.text is to be replaced by the id of your TextView in the search_autocomplete layout

然后,在onItemClick中检索表示受训人员的地图,如下所示:

代码语言:javascript
复制
Map<String, String> selectedTrainee = ((Map<String, String>) arg0.getItemAtPosition(arg2));

然后,您可以任意操作对象(姓selectedTrainee.get("last_name"))。

票数 0
EN

Stack Overflow用户

发布于 2014-01-14 09:55:07

我认为您打算将最后一行编码如下:

代码语言:javascript
复制
System.out.println("Last name: " + arg0.getItemAtPosition(arg2).get("last_name"));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21110029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档