1

私の Android アプリケーションには 2 つのビューがあります (実際には 2 つのビュー フラグメント)。最初のビューにはテキスト フィールドとボタンがあり、2 番目のビューには ListView があります。

私がしたいのは、(最初のビューから) textfield に設定されている内容に基づいて、ListView にいくつかのデータを設定することです。しかし、これを行う方法がわかりません。

onCreateView現在、2nd Views SecondFragment.java ファイルのメソッドから ListView にハードコードされたデータを設定しています。これは次のようになります。

ListView list = (ListView)view.findViewById(R.id.list_mainmenu);

items.add(new SectionItem("Section 1"));
items.add(new EntryItem("Item 1", "This is item 1", 1));
items.add(new EntryItem("Item 2", "This is item 2", 2));
items.add(new EntryItem("Item 3", "This is item 3", 3));


EntryAdapter adapter = new EntryAdapter(this.getActivity().getBaseContext(), items);
list.setAdapter(adapter);

しかし、それをonCreateViewメソッドに含めることは、私が望むものではありません。別のJavaファイルからそのビューのリストを設定できるようにしたい。私の場合FirstFragment.java

これは可能ですか?もしそうなら、どうすればそれを行うことができますか?

アプリが読み込まれるとすぐに が呼び出されるSecondFragment.javaため、クラスのインスタンスが既に存在する必要があると想像できます。onCreateViewどこから入手できるのかさっぱりわかりません。

4

1 に答える 1

0

問題は、アダプターをoncreateに設定するのではなく、oncreateに設定するか、ボタンのクリック時に設定するか、リストを表示したいときに設定することです。

// here SelectOption is a button
SelectOption.setOnClickListener(new OnClickListener() {
    public void onClick(View arg0) {    

        if(Text.equals("BEVERAGES")) {         
            l1.setAdapter(bever);
            return;
        }    
        else if(Text.equals("BREAKFAST")) {
            l1.setAdapter(Breakf);
            S5=new String[]{ Breakf.size() };
            return;
        }
        else if(Text.equals("LUNCH")) {
            l1.setAdapter(lunc);
            S5=new String[]{ lunc.size() };
            return;
        }
        else if(Text.equals("DINNER")) {
            l1.setAdapter(Dinn);
            S5=new String[]{ Dinn.size() };
            return;
        }
        else if(Text.equals("DESSERTS")) {
            l1.setAdapter(Dessert);
            S5=new String[]{ Dessert.size() };
            return;
        }
        else if(Text.equals("APPETIZERS & SIDES")) {
            l1.setAdapter(Appet);
            S5=new String[]{ Appet.size() };
            return;
        }
    }
});

そのため、データリストはアダプタを設定したときにのみ入力され、その後アダプタに新しい値を追加するときにもこの行を追加します

adapter.notifyDataSetChanged();
于 2012-07-24T09:36:24.477 に答える