将列表从第 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...
}
...
}
我有一个闪屏 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...
}
...
}