将列表从第 1 activity 传递到第 3 activity

Passing List from 1st activity to 3rd activity

我有一个闪屏 activity(ACTIVITY A) 加载完成后会打开 ACTIVITY B

ACTIVITY B ** 包含一个打开按钮 **ACTIVITY C

ACTIVITY A 使用异步任务加载列表

我希望这个加载的列表在打开时显示在ACTIVITY C

我阅读了很多关于如何将值从第一个 activity 传递到第三个 activity 的帖子,并尝试实现所有这些但没有任何帮助

Evven 尝试通过来自 ACTIVITY A > ACTÌVITY B > [ 的意图传递列表对象=59=] C 但没用

最后,我使用“jacksons library”将加载的列表转换为 jsonstring,然后将其放入 ACTIVITY A 的 sharedpreferences 中,然后从 sharedpreferences 中检索 jsonstring将其隐藏回 ** ACTIVITY C** 中的列表对象并显示列表

但是列表没有显示

怎么办,有没有更好的流程

飞溅activity(ACTIVITYA)

public class SplashActivity extends Activity{

    List<ParseObject> ob;
    List<CodeList> codelist = null;
    ObjectMapper mapper;
    SearchPreferences searchpref;

    @Override
    public void onCreate(Bundle savedInstanceState){
        // TODO: Implement this method
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);

        mapper = new ObjectMapper();
        searchpref = new SearchPreferences();

        new DataTask().execute();
    }

    public class DataTask extends AsyncTask<Void, Void, List<CodeList>>{
        @Override
        protected List<CodeList> doInBackground(Void[] p1){    
            codelist = new ArrayList<CodeList>();
            try {
                ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("InterActivity");

                query.orderByAscending("_created_at");

                ob = query.find();
                for (ParseObject inter : ob) {
                    CodeList map = new CodeList();
                    map.setIntroduction((String) inter.get("intro"));
                    codelist.add(map);
                }
                return codelist;
            } 
            catch (ParseException e) {
                Log.e("Error", e.getMessage());
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(List<CodeList> result){
            try{
                String jsonsearchlist = mapper.writeValueAsString(result);
                Intent i = new Intent(SplashActivity.this, MainActivity.class);

                searchpref.save(SplashActivity.this, jsonsearchlist);

                startActivity(i);
            }
            catch (JsonProcessingException e){}
        }
    }
}

ACTIVITY C

public class SearchActivity extends Activity{

    protected  EditText searchedittext;
    ImageButton searchButton;
    List<ParseObject> ob;
    List<CodeList> splashcodes;
    FinalAdapter fnladapter;

    SearchPreferences searchpref;
    ObjectMapper mapper;

    @Override
    public void onCreate(Bundle savedInstanceState){

        super.onCreate(savedInstanceState);
        setContentView(R.layout.search_layout);

        searchpref = new SearchPreferences();
        mapper = new ObjectMapper();

        String jsonsearchobj = searchpref.getValue(SearchActivity.this);

        try{
             splashcodes = (List<CodeList>) mapper.readValue(jsonsearchobj, CodeList.class);

            final ListView searchedlist = (ListView) findViewById(R.id.searchlist);
            fnladapter = new FinalAdapter(SearchActivity.this, splashcodes);
            searchedlist.setAdapter(fnladapter);
        }
        catch (IOException e){}
    }
}

创建一个全局 class 并将该列表放入 class。完成填写列表后,访问 Activity C.

中的列表数据

您走在正确的道路上:通过第二个活动循环您的信息。请注意,CodeList 必须是可序列化的。

public class SplashActivity extends Activity{
 ...
 protected void onPostExecute(ArrayList<CodeList> result){
   Intent intent = new Intent(SplashActivity.this, SoCalledBActivity.class);
   intent.putExtra("YOUR_UNIQUE_KEY",result);
   this.startActivity(intent);
 }
}

public class SoCalledBActivity extends Activity{
 ...
 Button trigger = (Button) findViewById(R.id.trigger);
    trigger.setOnClickListener(new Button.OnClickListener() {
        public void onClick(View v) {
          //get result list
          ArrayList<CodeList> result = (ArrayList<CodeList>) this.getIntent().getExtras().get("YOUR_UNIQUE_KEY");
          Intent intent = new Intent(SoCalledBActivity.this, SearchActivity .class);
          //add list for C activity
          intent.putExtra("YOUR_UNIQUE_KEY",result);
          this.startActivity(intent);
        }
    });

public class SearchActivity extends Activity{
  ...
  public void onCreate(Bundle savedInstanceState){
   //extract list
   ArrayList<CodeList> result = (ArrayList<CodeList>) this.getIntent().getExtras().get("YOUR_UNIQUE_KEY");
   //do whatever you want with your list...
  }
...
}