如何将活动中的列表数据传递给android中的演示者(MVP)

问题描述:

如何将列表数据从活动传递给演示者。我尝试过使用activityname.listname,但获得NULL。我可以知道如何打电话吗?如何将活动中的列表数据传递给android中的演示者(MVP)

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

} 
+0

试试这个:HTTPS://*.com/a/37348599/4148757 –

+0

可以请你告诉代码 –

+0

请太添加代码。 – Spartan

传递您的arraylist作为代码下面的参数。

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

} 
+0

感谢您的回复。我必须将活动中的数据传递给主持人... – Android

+0

比你需要声明你在主持人列表中作为公共静态列表 arraylist,比增加活动的价值,当你回去,使用arraylist在onResume下,这是一种方式 –

+0

另一个是你可以关闭lastActivty当你第二avtivy,获取数据后,你可以开始发送arraylist上一个活动, –

假设你的列表是一个字符串列表中进行数据的ArrayList 和使用

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"); 

希望有帮助。

+0

感谢您的回复... getIntent()不接受主持人类... – Android