0

少し複雑な問題があります。つまり、Androidでリストビューを実装しています。1 つのリスト項目には、ほぼ 6 つの子が含まれています。問題は、リスト itemClickListener がテキストビューのためにうまく機能しないことです。つまり、テキストビューではitemClickListingを実行しません。したがって、すべての TextView に対して個別に clickListeners を実装する必要があると思います。ここで問題が始まります: ListView の itemClickListener (Fragment クラス内にあります):

        JournalAdapter adapter = new JournalAdapter(JournalListFragment.activity, R.layout.journal_list_items, journals);

        ListView listView1 = (ListView)JournalListFragment.activity.findViewById(R.id.listView1);
        listView1.setAdapter(adapter);

        listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View view, int pos, long id) {
                Utilities.selectedJnrlId = view.getId() ;

                FragmentTransaction transaction = getFragmentManager().beginTransaction();
                transaction.replace(android.R.id.content, new JournalAddUpdateFragment());
                transaction.addToBackStack(null);
                transaction.commit();

            }

        });

ここではカスタムアダプターを使用しました。listView; に itemClickListener を実装すると、私は Fragment クラスから拡張されたクラスにいます。したがって、 listView-itemClickListener の結果でフラグメントを置き換えるだけですが、他のクラス、つまりCustomArrayAdapterに移動すると、 getFragmentManager()のためにこれを行うことができません。Custom-ArrayAdapter クラスが Fragment クラスから拡張されているため、エラーが発生します。それで、それに対する合理的な解決策はありますか?よろしく、

4

3 に答える 3

0

私が理解している限り、コードはフラグメントのサブクラスにあるため、見つかりません。

コンパイラが正しいクラスを指すようにするだけです。

次のように呼び出します。

MyFragment.this.getFragmentManager.beginTran...  etc
于 2013-04-08T15:16:21.933 に答える
-1

ListView のクリック リスナーを使用する代わりに、手動でリスナーをビューにバインドできますgetView()。そこにある唯一のトリックは、どのビューがクリックをトリガーしたかを知る必要があることですが、解決策は非常に簡単です -setTag()タグとして and を使用して、つまり行のリストビューの位置を置きます。次にgetTag()、クリックリスナーで、ビューの対応する行を取得して続行します

于 2013-04-08T15:03:48.977 に答える