android - 从过滤后的 ListView 中获取原始 ID

标签 android listview search filter

我有一个类,我可以在其中放入一个 StringArray,它会显示带有用于过滤内容的搜索框的列表。我的应用程序很容易每个字段都有一个集合 ID。但是,当我搜索一个值时,id 会更改为过滤后的列表。有没有办法从原始列表中获取 id,这样即使在过滤后的列表中,我也可以使用 9、14 而不是 0、1、2.... 之类的 id。

 lv1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , searchItems));
    ed.addTextChangedListener(new TextWatcher() {

        public void afterTextChanged(Editable s) {
        }

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

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

            textlength = ed.getText().length();
            arr_sort.clear();
            for (int i = 0; i < searchItems.length; i++) {
                if (textlength <= searchItems[i].length()) {
                    if (ed.getText().toString().equalsIgnoreCase((String) searchItems[i].subSequence(0, textlength))) {
                        arr_sort.add(searchItems[i]);
                    }
                }
            }

            lv1.setAdapter(new ArrayAdapter<String>(Rest_Search.this, android.R.layout.simple_list_item_1, arr_sort));
//                lv1.smoothScrollToPosition(20);
        }
    });
    lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView parent, View v,
                                int position, long id) {
//                String a = parent.getItemAtPosition(position);
//                menuID = (int) id;

            int a = (int) parent.getAdapter().getItemId(position);
//                menuID = (int) parent.getAdapter().getItemId(position);
            Toast.makeText(Rest_Search.this,  ""+a, Toast.LENGTH_SHORT).show();

最佳答案

您可以自定义您的适配器。创建一个新的 Class extends BasaAdapter 并覆盖 getItemId 方法:

@Override
    public long getItemId(int position) {
        return items[position].getID();
    }

然后在 onItemClick 中使用项目 id

关于android - 从过滤后的 ListView 中获取原始 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32691208/

相关文章:

java - 将 JavaFX2 导出到 Android

android - 尝试从图库中选取图像时出现 TransactionTooLargeException

android - 带复选框和不带复选框的 ListView

android - 如何删除 Android 上 ListView 之间的线条?

c# - 如何在每个目录或子目录中找到包含特定字符串的最新文件?

algorithm - 获得超过 2 个目标的帕累托前沿

android - 调用需要 api 级别 24(当前最小值为 21)新的 android.icu.text.DecimalFormat

android - AndroidManifest.xml 错误 "must have a minimum of 2 segments"

android - 如果没有添加列表,如何在页面中显示无结果?

c++ - 使用 std::vector<std::string> 的快速搜索算法