Androidでリストビューアイテムがクリックされたときにリストビューをフィルタリングしても正しい結果が表示されない

n4zg

リストビューデータがフィルタリングされた後、lisviewからアイテムをクリックすると、間違った結果が得られます。リストビューがフィルタリングされると位置の値が変化することを理解しています。正しい位置の値を取得する方法がわかりません。

    mListView.setAdapter(mAdapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1, data));
    mListView.setTextFilterEnabled(true);
    setupSearchView();
    mAdapter.setNotifyOnChange(true);

    mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            getActivityMain().pushNextFragment(FragmentWebview.newInstance(bbcNewsList.get(position).link,"roundfeed",bbcNewsList.get(position).title,bbcNewsList.get(position).source,bbcNewsList.get(position).image));
            System.out.println(" id " + id + " pos " + position);
        }
    });

カスタムアダプターを使用する必要がありますか?

ジェイ・ソイヤー

外部リストをアダプターのリストと同期する方法がないため、現在のコードを理解することはできません...特にフィルタリングが含まれる場合はそうです。代わりにのデータ型を格納するカスタムアダプタが必要になりますbbcNewsListこの答えのために、それListFooオブジェクトを格納しているとしましょうあなたは次のようなことをしたいと思うでしょう:

List<Foo> bbcNewsList;
// Fill bbcNewsList with data

mAdapter = new MyCustomAdapter(getActivity(),bbcNewsList);
mListView.setAdapter(mAdapter);
//Continue instantiation as needed

ArrayAdapterカスタムソリューション用にを拡張してみることができますが、それは問題になる可能性があります。まずgetView()、カスタムFooオブジェクトの表示方法がわかるようにメソッドをオーバーライドする必要があります。それ以外の場合は、Fooオブジェクトをに変換してString表示します。画像のフィルタリングを使用すると、デフォルトのロジックに固執します。あなたの場合、はオブジェクトをにArrayAdapter変換し、その結果に基づいてフィルタリングします。あなたはその振る舞いに問題がないかもしれません、そしてその場合、あなたはこのアプローチに問題がありません。ただし、その場で変更する予定がある場合は、フィルタリングにかなり厄介なバグがあることを警告します。FooStringArrayAdapter

もう1つの方法は、独自のアダプターを最初から作成することです。別名、BaseAdapterクラスの実装それほど気が遠くなることはありませんが、Androidを学んだばかりの人や、アダプターが一般的にどのように機能するかわからない人にとっては、かなり難しい場合があります。このソリューションでは、すべてのフィルタリングコードも実装する必要があります。

最後に、3番目のオプションはサードパーティのライブラリを使用することです。AbsArrayAdapterクラスをお勧めします。ここでは基本的に最初のオプションで行うことを行いますが、Fooオブジェクトをフィルタリングする方法を指定するオプションがあります。また、Androidのフィルタリングバグの影響も受けませんArrayAdapter

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ