【问题标题】:Android: How to set a Filter to a Adapter and ListViewAndroid:如何将过滤器设置为适配器和 ListView
【发布时间】:2015-09-29 06:36:02
【问题描述】:

我有一个 ListView,我在其中放置了餐厅列表。然后我在我的自定义适配器中添加了一个过滤器。当我在 EditText 字段中输入一些文本时,我只看到我要求的餐厅。所以过滤器起作用了。 但是我有问题!!

假设我的 ListView 由这 5 个餐厅组成:

行|餐厅

1 |约翰
2 |里诺
3 |保罗
4 |吉诺
5 |迈克尔

假设我正在搜索“ino”,过滤器会显示:

行 |餐厅

1 |里诺
2 |吉诺

问题来了!当我单击“Rino”时,我得到行号“1”,这是过滤的行号..但我需要有“2”,这是 Rino 的“真实”行。 所以,如果我点击“Gino”,我会得到“2”,而我需要得到“4”,这是 Gino 的“真正的行”。 (看我写的第一张表)

我需要这样做.. 我点击一家餐厅的名称,我想查看有关该餐厅的所有详细信息。但是使用过滤器我得到了错误的餐厅行号......以及不同的餐厅细节!我该怎么办?

【问题讨论】:

    标签: android listview filter adapter


    【解决方案1】:

    你得到的是OnItemClickListener的正常行为。

    您需要覆盖适配器的public Object getItem(int positon) 方法。 此方法应返回在position 行中显示数据的对象。

    然后您使用以下内容访问所需的数据:

    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Object object = yourAdapter.getItemp(position);
        // do whatever you want with the object
    }
    

    【讨论】:

    • 嗯嗯好的!它看起来很有趣。我会尽力做你告诉我的......非常感谢
    • 你好我又回来了。我正在度假,所以我可以早点回复:) 我试着按照你的提示做,但我不能让它工作。我正在使用这个适配器:gist.github.com/fjfish/3024308 并像这样修改它: public Object getItem(int position) return originalData // 这是存储原始数据的数组 // 并且在事件 onItemClick 我执行以下操作: Object c = adapter.getItem(position) 但我得到的是我的数组中所有项目的完整列表,而不是我点击的..我该如何解决它?对不起,,,我的Java真的很差
    • 您的getItem方法应该返回该位置的项目而不是整个数组。试试return originalData[position]
    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 2020-12-06
    • 2014-09-06
    • 1970-01-01
    相关资源
    最近更新 更多