【问题标题】:Search in ListView, incorrect result on get id onItemClick在 ListView 中搜索,获取 id onItemClick 的结果不正确
【发布时间】:2014-04-23 15:04:01
【问题描述】:

我有一个 Activiti,其中有一个 ListView 搜索。当我返回任何我不使用过滤器的结果时,一切都很好。选择元素 520,我得到它的 id,但是一旦我使用过滤器并找到相同的项目,得到 id 0-10。请告诉我如何解决这个问题。提前致谢! 附: 对不起我的英语!

public class Clients extends Activity {

private ListView lv;

ArrayAdapter<String> adapter;
EditText etInputSearch;
  DB dbSync;
  DB dbUser;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.clients);
    dbSync = new DB(this);
    dbUser = new DB(this);

    lv = (ListView) findViewById(R.id.list_view);
    etInputSearch = (EditText) findViewById(R.id.etInputSearch);
    adapter = new ArrayAdapter<String>(this, R.layout.clients_item, R.id.clients_name, dbSync.createlistClients(dbUser.getCodeAgent()));
    lv.setAdapter(adapter);
    lv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> l, View v, int position,
                long id) {
            Log.d("TAG", position + " " + id);

        }
        });

    etInputSearch.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
            Clients.this.adapter.getFilter().filter(cs);
        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,int arg3) {}
        @Override
        public void afterTextChanged(Editable arg0) {}
    });
}

}

【问题讨论】:

    标签: android listview search


    【解决方案1】:

    您正在使用标准的 ArrayAdapter。在标准AndroidAdapter的实现中可以找到如下代码:

    public long getItemId(int position) {
            return position;
        }
    

    这就是为什么你得到 id quals 位置。要避免这种行为,您必须实现自己的适配器(例如扩展 ArrayAdapter)并覆盖 getItemId 方法。 或者使用 CursorAdapter,它使用数据库中的 _id 列作为 id。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多