-3

How to pass list data from activity to presenter.I have tried activityname.listname but its getting NULL . Could I know how to call?

MainActivity.java

                 public List<AppGrid> arraylist = new ArrayList<AppGrid>();
                 Bundle bundle = getIntent().getExtras();
    if(bundle != null){
        arraylist = bundle.getParcelableArrayList("mylist");
        Toast.makeText(MainActivity.this,"bundle->+"+arraylist,Toast.LENGTH_LONG).show();

        }
 AddFavariteApps();
    }

   private void AddFavariteApps() {
    HeaderItem HeaderInstalledApps = new HeaderItem(0, "Favourite");
    GridItemPresenter1 gridFavouriteApps = new GridItemPresenter1();
    ArrayObjectAdapter FavouriteAppsAdapter = new ArrayObjectAdapter(gridFavouriteApps);
    FavouriteAppsAdapter.add(getString(R.string.installed_apps));
    FavouriteAppsAdapter.add("Add Apps");
    rowsAdapter.add(new ListRow(HeaderInstalledApps, FavouriteAppsAdapter));
}

GridItemPresenter1.java

public class GridItemPresenter1 extends Presenter {
private static Context mContext;
private static int CARD_WIDTH = 313;
private static int CARD_HEIGHT = 176;
String str_App_name;
Drawable str_App_Icon;
MainActivity mMainActivity;

@Override
public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object item) {
    str_App_name = Constants.shared().getAppName();
    if (((String) item).equalsIgnoreCase("Add Apps")) {
        ((ViewHolder) viewHolder).mCardView.setContentText("Add Apps");
        ((ViewHolder) viewHolder).mCardView.setMainImageDimensions(CARD_WIDTH, CARD_HEIGHT);
        ((ViewHolder) viewHolder).updateCardViewImage1(R.drawable.item_img_add);

    }else {
        if(mMainActivity.arraylist != null) {
            for (int i = 0; i < mMainActivity.arraylist.size(); i++) {
                viewHolder).mCardView.setContentText(mMainActivity.arraylist.get(i).getName());
            }
        }
    }

}
Android
  • 3
  • 5

2 Answers2

0

Assuming that your List is a list of strings make data an ArrayList and use

    intent.putStringArrayListExtra("data", data)

Here is a skeleton of the code you need:

Declare List

    private List<String> test;

Init List at appropriate place

    test = new ArrayList<String>();

and add data as appropriate to test. Pass to intent as follows:

    Intent intent = getIntent();  
    intent.putStringArrayListExtra("test", (ArrayList<String>) test);

Retrieve data as follows:

    ArrayList<String> test = getIntent().getStringArrayListExtra("test");

Hope that helps.

Horrorgoogle
  • 7,858
  • 11
  • 48
  • 81
Rims
  • 91
  • 5
0

pass your arraylist as the parameter chek out below code.

   public List<AppGrid> arraylist = new ArrayList<AppGrid>();
                     Bundle bundle = getIntent().getExtras();
        if(bundle != null){
            arraylist = bundle.getParcelableArrayList("mylist");
            Toast.makeText(MainActivity.this,"bundle->+"+arraylist,Toast.LENGTH_LONG).show();

            }
     AddFavariteApps();
        }

       private void AddFavariteApps() {
        HeaderItem HeaderInstalledApps = new HeaderItem(0, "Favourite");
        GridItemPresenter1 gridFavouriteApps = new GridItemPresenter1(arraylist); // pass as your arraylist as parameter
        ArrayObjectAdapter FavouriteAppsAdapter = new ArrayObjectAdapter(gridFavouriteApps);
        FavouriteAppsAdapter.add(getString(R.string.installed_apps));
        FavouriteAppsAdapter.add("Add Apps");
        rowsAdapter.add(new ListRow(HeaderInstalledApps, FavouriteAppsAdapter));
    }

==========================================================

public class GridItemPresenter1 extends Presenter {
private static Context mContext;
private static int CARD_WIDTH = 313;
private static int CARD_HEIGHT = 176;
String str_App_name;
Drawable str_App_Icon;
MainActivity mMainActivity;

 public GridItemPresenter1 (List<AppGrid> arraylist) {
        this.arraylist = arraylist;
    }

@Override
public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object item) {
    str_App_name = Constants.shared().getAppName();
    if (((String) item).equalsIgnoreCase("Add Apps")) {
        ((ViewHolder) viewHolder).mCardView.setContentText("Add Apps");
        ((ViewHolder) viewHolder).mCardView.setMainImageDimensions(CARD_WIDTH, CARD_HEIGHT);
        ((ViewHolder) viewHolder).updateCardViewImage1(R.drawable.item_img_add);

    }else {
       if(arraylist != null) {
                for (int i = 0; i <arraylist.size(); i++) {
                    viewHolder).mCardView.setContentText(arraylist.get(i).getName());
                }
            }
    }

}
Jai Khambhayta
  • 4,198
  • 2
  • 22
  • 29
  • than you nee to declare you list in presenter as public static List arraylist, than add value on activity and when you go back,use arraylist under onResume,this is one way – Jai Khambhayta Jun 01 '17 at 06:03
  • another is you can close lastActivty when you came to second avtivy , after getting data you can start that previous activity with sending arraylist, – Jai Khambhayta Jun 01 '17 at 06:04
  • for close exist activity and go to new activity use code Intent i = new Intent(this, A.class); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); startActivity(i); – Jai Khambhayta Jun 01 '17 at 06:05
  • here im using only mainactivity.java ...calling presenter from activity like this GridItemPresenter1 gridFavouriteApps = new GridItemPresenter1(); – Android Jun 01 '17 at 06:08