【发布时间】:2016-05-03 02:25:43
【问题描述】:
我目前正在使用这种方法来过滤列表的结果。我有一个显示数据的微调器,我希望使用所选数据过滤列表视图。
String[] finalArray = new String[gameData.size()];
finalArray = gameData.toArray(finalArray);
// finalArray contains the selection for the spinner
final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, finalArray);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
selection = (String)spinner.getSelectedItem();
for(String str: oldList) {
if(str.trim().contains(selection))
gameData.add(str);
}
finalArray = new String[gameData.size()];
finalArray = gameData.toArray(finalArray);
arrayAdapter.notifyDataSetChanged();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
我假设listView.setAdapter(arrayAdapter) 会在做出选择后更新列表,但它目前不执行任何操作。
String selection = (String)spinner.getSelectedItem();
for(String str: oldList) {
if(str.trim().contains(selection))
gameData.add(str);
}
我所做的是将选择设置为一个字符串。然后我检查oldList 是否包含字符串选择。然后,我通过 oldList 来匹配 selection,如果匹配,则将它们放入一个新列表中,即 gameData(视为过滤结果)。那是我将其转换为数组并在匹配时将其加载到列表视图的时候。
【问题讨论】:
-
finalArray = gameData.toArray(finalArray);行有什么作用?您似乎正在将一个空数组 (finalArray) 传递给 ArrayAdapter?请出示gameData的内容。 -
gameData是一个列表。我在这段代码之前做了一些字符串拆分。gameData' is converted into array which isfinalArray`的内容。它不是一个空数组。 -
@ishmaelMakitla 更新了问题
-
你总是加到
gameData吗?或者任何元素也可以从gameData中删除?
标签: java android listview spinner