sunny
sunny

Reputation: 179

How to pass data from Activity to Fragement in Tab layouts..?

Hello everyone i need how to passs data from activity to fragment if any easy way

I need to implement by using Interface

Here is the example of my data type.

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

I am using the dummy values for explaing the code in but my case values coming from web api.

Now problem is i have a activity with two tab . tab1 or tab2

when activity start then it fatch the data from server and store it on custom array list. eg. finaldata in my case

now in tab1 here is a list view that get the list from finaldata

Here is the code of onCreateView Of fragment . i need to pass the final data values from main activity to fragment adapterdata list.

@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;
}

Upvotes: 0

Views: 128

Answers (3)

Harshad07
Harshad07

Reputation: 608

Please Add this code to your Activity when you call the fragment:

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

But first make your PreviewData like as follows(name is for example) :

 public class PreviewData implements Serializable{

     private String name;

    public String getName() {
         return name;
    }

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

Then get your object in your fragment like :

@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; 
}

Upvotes: 1

faranjit
faranjit

Reputation: 1637

In activity:

public ArrayList<PreviewData> getAdapterData {
     return finaldata;
}

In fragment:

@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);
}

Upvotes: 0

Andolasoft Inc
Andolasoft Inc

Reputation: 1296

Create a Constant class like below

public Constant{

    public static ArrayList<Previewdata> data=null;

}

Then assign array value to the constant class like below

    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;

And retrive from fragment

@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;
}

Upvotes: 1

Related Questions