我想在我的项目中实现以下内容。 从活动A我想开始活动B的结果。 活动A有一个列表视图(比如mylistview)和为它设置的适配器。 (比如myadapter)。 和相应的arraylist myarraylist。
使用活动B的结果字符串我想将该字符串添加到活动A的现有列表视图中。
我做了以下事情:
活动A:
ArrayAdapter<String> myadapter = new ArrayAdapter<String>(this, android.r.layout.simple_list_item_1,myarraylist);
mylistview.setListAdapter(myadapter);
Intent i = new Intent(this, activityB.class);
startAcivityForResult(i,1);
现在在我的onActivityResult方法中:
String new_str = data.getStringExtra();
myarraylist.add(new_str);
myadapter.notifyDatasetChanged();
和活动B:
Intent i =new Intent();
i.putExtra("card_name", Card_name);
setResult(RESULT_OK,i);
我的程序没有显示任何错误,并且工作正常。 但我的列表视图仍未正确更新。
我哪里错了?
答案 0 :(得分:0)
我认为你应该尝试调试什么是错的。要么没有正确读取字符串,要么字符串永远不会到达列表视图。
如果未读取String,请尝试在intent中发送它。如果它被添加到数组中,但没有添加到listview中,我会尝试更新适配器,以便直接从数组中读取。
像这样:
public class CustomStringAdapter extends ArrayAdapter<String> {
public CustomStringAdapter(Context context, int textViewResourceId,
List<String> objects) {
super(context, textViewResourceId, objects);
}
@Override
public int getCount() {
return myarraylist.size();
}
@Override
public String getItem(int position) {
// TODO Auto-generated method stub
return myarraylist.get(position);
}
}
然后将其设置为适配器:
CustomStringAdapter myadapter = new CustomStringAdapter(this,android.r.layout.simple_list_item_1,myarraylist);
mylistview.setListAdapter(myadapter);
这可能不是答案,但值得测试。