gpt4 book ai didi

android - 将列表从第一个 Activity 传递到第三个 Activity

转载 作者:行者123 更新时间:2023-11-30 01:30:39 25 4
gpt4 key购买 nike

我有一个启动画面 Activity (ACTIVITY A),加载完成后会打开 ACTIVITY B

Activity B ** 包含一个打开 ** Activity C 的按钮

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

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

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

Evven 尝试通过来自 ACTIVITY A> ACTÌVITY B> ACTIVITY C 的 Intent 传递列表对象,但没有成功

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

但是列表没有显示

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

飞溅 Activity (ACTIVITY A)

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){}
}
}

最佳答案

您走在正确的道路上:通过第二个 Activity 循环您的信息。请注意,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...
}
...
}

关于android - 将列表从第一个 Activity 传递到第三个 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35792217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com