0

我在搜索我的列表时遇到了问题。列表数组曾经附加到String[]实际的 .java 文件中,但我将数组移动到字符串 xml 文件中以实现在应用程序中使用不同语言的另一个功能。因此翻译列表视图

无论如何,我理解为什么代码会执行以下操作,但我不知道如何解决它......

Resources res = getResources();
final String[] items = res.getStringArray(R.array.societies_array);

listView2 = (ListView) findViewById(R.id.societieslist);
EditText inputSearch = (EditText) findViewById(R.id.inputSearch);

// Adding items to listview
adapter = new ArrayAdapter<String>(this,
        android.R.layout.simple_list_item_1, items);
inputSearch.addTextChangedListener(new TextWatcher() {
    @Override
    public void onTextChanged(CharSequence cs, int arg1, int arg2,
            int arg3) {
        // When user changed the Text
        System.out.println(cs);
        SocietiesScreen.this.adapter.getFilter().filter(cs);
    }

    @Override
    public void beforeTextChanged(CharSequence arg0, int arg1,
            int arg2, int arg3) {
        // TODO Auto-generated method stub
    }

    @Override
    public void afterTextChanged(Editable arg0) {
        // TODO Auto-generated method stub
    }
});

列表的 onclick 侦听器取决于列表的索引,因此当不搜索时它工作正常但是当我搜索特定选项时,新的“第一个选项”现在被分配一个新的索引号而不是保持它的原始

希望这是有道理的,我已经提供了足够的代码,如果您需要其他任何东西,请告诉我

谢谢

4

1 回答 1

0

我想我已经在这里回答了一个非常相似的问题。您还应该观看“ listView 的世界”讲座。

基本上,如果您使用自定义 BaseAdapter,您可以为过滤的项目创建一个新模式,只要搜索字段中有内容,就会启用该模式。

启用此模式后,将从过滤列表中检索项目,而不是从原始列表中检索项目。

如果您不使用自己的 BaseAdapter,请查看此链接

于 2013-04-18T17:50:12.903 回答