问题:由于未设置mOriginalValues,安卓ArrayAdapter无法过滤。
答案:在安卓开发中,ArrayAdapter是一种常用的适配器,用于将数据集合绑定到ListView或Spinner等控件上。当我们需要对ListView中的数据进行过滤时,可以使用ArrayAdapter的过滤功能。然而,有时候在使用ArrayAdapter进行过滤时会遇到"由于未设置mOriginalValues,无法过滤"的问题。
这个问题通常是由于没有正确设置ArrayAdapter的mOriginalValues属性导致的。mOriginalValues是ArrayAdapter的一个私有属性,用于保存原始的数据集合。当我们调用ArrayAdapter的getFilter()方法进行过滤时,它会尝试从mOriginalValues中获取原始数据进行过滤操作。
解决这个问题的方法是在创建ArrayAdapter时,将原始的数据集合传递给它,并设置给mOriginalValues属性。具体的步骤如下:
以下是一个示例代码:
ArrayList<String> originalData = new ArrayList<>();
originalData.add("Apple");
originalData.add("Banana");
originalData.add("Orange");
ArrayAdapter<String> adapter = new ArrayAdapter<>(context, android.R.layout.simple_list_item_1, originalData);
adapter.setNotifyOnChange(true);
ListView listView = findViewById(R.id.listView);
listView.setAdapter(adapter);
// 进行过滤操作
adapter.getFilter().filter("A");
在上述代码中,我们创建了一个包含"Apple"、"Banana"和"Orange"的原始数据集合originalData,并将它传递给ArrayAdapter。然后,我们调用setNotifyOnChange(true)方法启用数据变化的通知,并将ArrayAdapter设置给ListView。最后,我们调用getFilter()方法进行过滤操作,传入过滤条件"A"。
对于这个问题,腾讯云没有特定的产品或服务与之直接相关。然而,腾讯云提供了丰富的云计算解决方案,包括云服务器、云数据库、云存储等,可以帮助开发者构建稳定、可靠的云计算应用。您可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多相关信息。
领取专属 10元无门槛券
手把手带您无忧上云