gpt4 book ai didi

java - 将值从第一个 Activity 传递到第三个 Activity 到 ListView 中覆盖旧值

转载 作者:行者123 更新时间:2023-12-02 13:27:59 25 4
gpt4 key购买 nike

我有一个应用程序,用户可以在其中输入数字并保存到 listView。该应用程序分为 3 个 Activity 。第一个 Activity 是 MainActivity,它执行其他操作。第二个 Activity 是我输入数字并保存它。代码如下

public class HomeTeamScored extends Activity {

protected static EditText display;
protected static ArrayAdapter<String> adapter;
Button addButton;
CheckBox checkBox;

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

display = (EditText) findViewById(R.id.editText);
addButton = (Button) findViewById(R.id.btn);
checkBox = (CheckBox) findViewById(R.id.checkBox);

adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1);


addButton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
String task = display.getText().toString();
adapter.add(task);
adapter.notifyDataSetChanged();
SavePreferences();


Intent i = new Intent(HomeTeamScored.this, MainActivity.class);
startActivity(i);
finish();
}
});
}

protected void SavePreferences() {
// TODO Auto-generated method stub
SharedPreferences data = getApplicationContext().getSharedPreferences("saveNumber", android.content.Context.MODE_PRIVATE);
SharedPreferences.Editor editor = data.edit();
for (int i = 0; i < adapter.getCount(); ++i){
// This assumes you only have the list items in the SharedPreferences.
editor.putString(String.valueOf(i), adapter.getItem(i));
}
editor.commit();
}

}

在第三个 Activity 中,我检索了保存的号码。

public class ScoreBoardOverview extends Activity {

ListView lv;

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

adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1);
lv = (ListView) findViewById(R.id.listView);

adapter.notifyDataSetChanged();
lv.setAdapter(adapter);
loadPreferences();
}

protected void loadPreferences(){
SharedPreferences data = getApplicationContext().getSharedPreferences("saveNumber", Context.MODE_PRIVATE);
for (int i = 0;; ++i){
final String str = data.getString(String.valueOf(i), "");
if (!str.equals("")){
adapter.add(str);
} else {
break; // Empty String means the default value was returned.
}
}
}

}

所有这些都工作正常,并且它向 listView 添加了一个数字,但问题是它覆盖了旧值,而是应该添加第二行。

有谁可以帮忙吗?

最佳答案

adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1);


addButton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
String task = display.getText().toString();
adapter.add(task);
adapter.notifyDataSetChanged();
SavePreferences();


Intent i = new Intent(HomeTeamScored.this, MainActivity.class);
startActivity(i);
finish();
}
});
}

当您每次调用第二个 Activity 时,您的适配器项目大小将为 0。如果你想添加第二个或第三个项目,你应该写你的

protected void loadPreferences(){
SharedPreferences data = getApplicationContext().getSharedPreferences("saveNumber", Context.MODE_PRIVATE);
for (int i = 0;; ++i){
final String str = data.getString(String.valueOf(i), "");
if (!str.equals("")){
adapter.add(str);
} else {
break; // Empty String means the default value was returned.
}
}
}

第二个 Activity 中的方法也是如此。并在此行之后调用 loadPreferences()

adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1);

您的适配器数据大小将发生变化。

关于java - 将值从第一个 Activity 传递到第三个 Activity 到 ListView 中覆盖旧值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43330554/

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