2016-08-01 11 views
0

こんにちは、誰もが私のデータ型の一例です。タブレイアウトのアクティビティからフラメンチにデータを渡す方法..?私はここではインタフェース</strong></p> <p>を使用して実装する必要が</p> <p><strong>簡単な方法であれば、私が断片化する活動からのデータをpasssする方法を必要

ArrayList<PreviewData> finaldata = new ArrayList<PreviewData>(); 
for(int i=0;i<10;i++) { 
    PreviewData tempdata = new PreviewData("listname"+i+"","dsdsdsd","sdsdsdd"); 
    finaldata.add(tempdata); 
}  

私は、内のコードをexplaingが、私の場合の値は、Web APIから来るのためのダミーの値を使用しています。

今問題は2つのタブのあるアクティビティです。 TAB1またはTAB2

活動は、それがサーバーからデータをfatchとカスタム配列リストに保存し、次に起動したとき。 たとえば、 finaldata

私の場合は、ここで TAB1でここ finaldata

からリストを取得するリストビューは、フラグメントのonCreateViewのコードです。 メインアクティビティの最終データ値をフラグメントadapterdataリストに渡す必要があります。

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    mydbhelper = new DBhelper(getContext()); 
    view = inflater.inflate(R.layout.view_all_campaign, container, false); 
    ArrayList<PreviewData> adapterdata= new ArrayList<PreviewData>(); 
    listView = (ListView) view.findViewById(R.id.campaign_list_view); 
    adapter = new MyCustomAdapter(getContext(), R.layout.layout_contact_row, adapterdata); 
    listView.setAdapter(adapter); 
    return view; 
} 
+0

あなたのフラグメントのカスタム配列リストは最初だけで2番目のフラグメントにその配列リストを渡す必要がある場合は! – Piyush

+0

はい私は知っているが、どのように......? – sunny

+0

メソッドを2番目のフラグメントの新しいインスタンスにし、_setArguments()_メソッドでデータを渡すためにbundleを使用します。 – Piyush

答えて

1

追加してくださいのような

ArrayList<PreviewData> finaldata = new ArrayList<PreviewData>(); 
for(int i=0;i<10;i++) { 
    PreviewData tempdata = new PreviewData("listname"+i+"","dsdsdsd","sdsdsdd"); 
    finaldata.add(tempdata); 
} 

Constant.data=finaldata; 

の下に一定のクラスに配列の値を割り当て、フラグメント

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    mydbhelper = new DBhelper(getContext()); 
    view = inflater.inflate(R.layout.view_all_campaign, container, false); 
    ArrayList<PreviewData> adapterdata= Constant.data; 
    listView = (ListView) view.findViewById(R.id.campaign_list_view); 
    adapter = new MyCustomAdapter(getContext(), R.layout.layout_contact_row, adapterdata); 
    listView.setAdapter(adapter); 
    return view; 
} 
+0

Thnxは私に試してみよう。 – sunny

+0

私はnullポインタを表示しているNullPointerException – sunny

+0

を返す。 – Andolasoft

1

からretriveすると

public Constant{ 

    public static ArrayList<Previewdata> data=null; 

} 

以下のような定数クラスを作成します。このコードをあなたの

:ようなあなたのフラグメントであなたのオブジェクトを取得後

public class PreviewData implements Serializable{ 

    private String name; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
     } 
    } 

Bundle bundle = new Bundle(); 
ArrayList<PreviewData> finaldata = new ArrayList<PreviewData>(); 
bundle.putSerializable("myArray",(Serializable)finaldata); 
// set Arguments 
Fragmentclass obj = new Fragmentclass(); 
obj.setArguments(bundle); 

しかし、最初に次のようにのようなあなたのPreviewDataを作る(名前は例えばです):あなたがフラグメントを呼ぶ活動

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
mydbhelper = new DBhelper(getContext()); 
view = inflater.inflate(R.layout.view_all_campaign, container, false); 

ArrayList<PreviewData> adapterdata= new ArrayList<PreviewData>(); 
adapterdata = getArguments().getStringArrayList("myArray"); 
listView = (ListView) view.findViewById(R.id.campaign_list_view); 

adapter = new MyCustomAdapter(getContext(), R.layout.layout_contact_row, adapterdata); 
listView.setAdapter(adapter); 
return view; 
} 
+0

'putStringArrayList(String key、ArrayList value)' ... 'finaldata'はここにあります文字列のArrayListではありません。 –

+1

PreviewDataはゲッターセッタークラスだから、なぜ新しいクラスを作る必要があるのですか? – sunny

+0

理想的には、代わりに 'Parcelable'を実装するべきです –

0

活性:

012フラグメントで
public ArrayList<PreviewData> getAdapterData { 
    return finaldata; 
} 

@Override 
public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    ArrayList<PreviewData> adapterdata = ((YourActivity) getActivity()).getAdapterData(); 
    adapter = new MyCustomAdapter(getContext(), R.layout.layout_contact_row, adapterdata); 
    listView.setAdapter(adapter); 
} 
関連する問題