Java 链表不更新值
因此,我调试了我的程序,发现程序的一部分正在更新,而另一部分则没有 我有一个方法:Java 链表不更新值,java,android,object,linked-list,Java,Android,Object,Linked List,因此,我调试了我的程序,发现程序的一部分正在更新,而另一部分则没有 我有一个方法: public void storeApplication(String name, String item){ Application app = new Application(name, item); peopleAttending.add(app); } 调试器报告LinkedList(PeopleAttenting)中包含对象 在另一种方法中: public void populat
public void storeApplication(String name, String item){
Application app = new Application(name, item);
peopleAttending.add(app);
}
调试器报告LinkedList(PeopleAttenting)中包含对象
在另一种方法中:
public void populateListView() {
int noOfPeopleAttending = peopleAttending.size();
String noPeopleAttending = String.valueOf(noOfPeopleAttending);
Toast.makeText(GuestsAttending.this, noPeopleAttending, Toast.LENGTH_SHORT).show();
}
此方法可以在前一个方法之后调用,并声明LinkedList中没有对象
我检查了对象引用,只是为了确保它们指向同一个引用,并且它们是
任何帮助都将不胜感激
编辑:整个类:
public class GuestsAttending extends Activity {
private LinkedList<Application> peopleAttending = new LinkedList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_guests_attending);
populateListView();
}
public void storeApplication(String name, String item){
Application app = new Application(name, item);
peopleAttending.add(app);
}
public void populateListView() {
// GuestsAdapter adapter = new GuestsAdapter(this, peopleAttending);
// ListView listView = (ListView) findViewById(R.id.listView);
// listView.setAdapter(adapter);
peopleAttending.size();
int noOfPeopleAttending = peopleAttending.size();
String noPeopleAttending = String.valueOf(noOfPeopleAttending);
Toast.makeText(GuestsAttending.this, noPeopleAttending, Toast.LENGTH_SHORT).show();
}
GuestsAttending Java类:--参见上文。有用提示:从
Java.util
包将列表类型设置为列表
接口,而不是链接列表
本身,这是非常流行的做法
无论如何,我很确定在ActivityFramework运行onCreate方法之前,
storeApplication
方法不会自动触发。也许您的调试器正在以不同的顺序停止它(因为使用了线程或smth),但您应该记录一些调用。试着找出问题所在。我发现了问题所在:
当我提交预订信息时,它会运行所有必要的方法。但是,当“storeApplication()”方法完成执行后,ArrayList会“清空”所有对象
我只是在使用断点并尝试运行该方法两次时才注意到这一点,第二次输入预订详细信息时,ArrayList声明它为空
我要看看是否可以尝试将ArrayList存储在一个更安全的地方。既然您有一个调试器,您是否可以在每次访问PeopleAttenting时附加一个断点来停止执行,从而确定是否有其他操作正在清空该列表?你百分之百确定两种情况下参加会议的人都是同一个对象吗?百分之百——我一天的大部分时间都在中断,到目前为止运气都不好/那么在这两段代码之间的某个地方设置一个
peopleatting.clear()
怎么样?@Matthew Levene您需要共享更多的代码。我们不知道程序流程,错误可能存在于您尚未共享的代码中。例如,我们不知道PeopleAttenting变量的作用域是什么。@AbbéRésina在我的程序中没有类似的代码。请参见我的edit.storeApplication()由另一个类触发(该类链接到我从中获取存储数据的XML),您能否以某种方式共享您是如何配置它的?
public void saveBookingInfo(View view) {
GuestsAttending sendApplication = new GuestsAttending();
EditText applicantNameText = (EditText) findViewById(R.id.applicantNameTextField);
EditText itemToBurnText = (EditText) findViewById(R.id.itemToBurnTextField);
String appName = applicantNameText.getText().toString();
String appItemToBurn = itemToBurnText.getText().toString();
if (appItemToBurn.isEmpty() || appName.isEmpty()) {
Toast.makeText(BookingScreen.this, "Please fill in all fields.", Toast.LENGTH_SHORT).show();
}
else {
sendApplication.storeApplication(appName, appItemToBurn);
}
}