gpt4 book ai didi

java - 将对象的 ArrayList 从一个 Activity 移动到另一个 Activity 。还有适配器问题

转载 作者:行者123 更新时间:2023-12-02 10:37:58 25 4
gpt4 key购买 nike

我对所有这些东西都很陌生,所以我希望你能帮助我解决我的情况。我希望我的应用程序获取 mainactivity 中两个 EditText 的信息,保存它(在我的情况下使用 json)并将其传递给另一个 Activity 并将其显示在 ListView 上。但我的适配器和我的 Intent 有问题。

MainActivity.java

public class MainActivity extends AppCompatActivity {

SharedPreferences sharedPreferences;
EditText place;
EditText description;
Button save;
JournalList journalList;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

place = findViewById(R.id.place);
description = findViewById(R.id.description);
save = findViewById(R.id.save);

sharedPreferences = getSharedPreferences("Journal", MODE_PRIVATE);

String json = sharedPreferences.getString("journal", "");
if(json != null){
journalList = new JournalList();
journalList = journalList.fromJson(json);
for (Journal p:journalList.journals
) {
Log.d("Journal", "Place :" + p.place + "Description :" + p.description);

}
}else{
journalList = new JournalList();
}

}

public void clickOnSave (View view) {
save();
openList();

}
/*
Con este metodo pasamos a la actividad donde tenemos guardados los diarios al pulsar el boton
save.
*/
public void openList (){
Intent intent = new Intent(this, ListViewActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("JournalList", journalList);
intent.putExtra("Bundle", bundle);
startActivity(intent);

}
/*
Con este metodo guardamos de manera persistente la informacion introducida en los editText
del layout al hacer click en el boton save.
*/
public void save (){
String newPlace = place.getText().toString();
String newDescription = description.getText().toString();

Journal journal = new Journal();
journal.place = newPlace;
journal.description = newDescription;

journalList.journals.add(journal);


SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("journal", journalList.toJson());
editor.apply();
Toast.makeText(this, "Data saved", Toast.LENGTH_SHORT).show();
}
}

ListviewActivity.java

public class ListViewActivity extends AppCompatActivity {

ListView list;
ArrayList<JournalList> journalLists;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_view);

list = findViewById(R.id.list);
Bundle bundle = getIntent().getBundleExtra("Bundle");
ArrayList<JournalList> journalLists = (ArrayList<JournalList>) bundle.getSerializable("JournalList");
//Adaptamos el array a nuestra lista
MyAdapter adapter = new MyAdapter(this, android.R.layout.simple_list_item_1, journalLists);
list.setAdapter(adapter);
}
}

MyAdapter.java

public class MyAdapter extends ArrayAdapter<JournalList> {
private Context context;
int itemLayout;
ArrayList<JournalList> JournalLists;

public MyAdapter(@NonNull Context context, int resource, @NonNull List<JournalList> JournalLists) {
super(context, resource, JournalLists);
this.context = context;
itemLayout = resource;
this.JournalLists = (ArrayList<JournalList>) JournalLists;
}

@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
LayoutInflater layoutInflater = LayoutInflater.from(context);
View view= layoutInflater.inflate(itemLayout, parent, false);
TextView placeTV = convertView.findViewById(R.id.placeTV);
TextView descriptionTV = convertView.findViewById(R.id.descriptionTV);
placeTV.setText(JournalLists.indexOf(position));
descriptionTV.setText(JournalLists.indexOf(position));


return view;
}
}

Journal.java

public class Journal implements Serializable {
String place;
String description;}

JournalList.java

public class JournalList implements Serializable {
public ArrayList<Journal> journals;

public JournalList(){
journals = new ArrayList<>();
}

public String toJson (){
Gson gson = new Gson();
String json = gson.toJson(this);
return json;
}
public JournalList fromJson (String json){
Gson gson = new Gson();
JournalList journalList = gson.fromJson(json, JournalList.class);
return journalList;
}
}

修复拼写错误后,我得到了这个新的 logcat:

Caused by: java.lang.ClassCastException: com.example.alexj.ejercicio6.JournalList cannot be cast to java.util.ArrayList
at com.example.alexj.ejercicio6.ListViewActivity.onCreate(ListViewActivity.java:26)
at android.app.Activity.performCreate(Activity.java:7136)
at android.app.Activity.performCreate(Activity.java:7127)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)

最佳答案

也许你应该改变

Bundle bundle = getIntent().getBundleExtra("bundle");

Bundle bundle = getIntent().getBundleExtra("Bundle");

关于java - 将对象的 ArrayList 从一个 Activity 移动到另一个 Activity 。还有适配器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53144049/

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