0

我想在我的项目中实现以下内容。从活动 A 我想开始活动 B 以获得结果。活动 A 有一个列表视图(比如 mylistview)和一个为其设置的适配器。(说我的适配器)。和相应的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);

我的程序没有显示任何错误并且工作正常。但我的列表视图仍然没有正确更新。

我哪里错了?

4

1 回答 1

0

我认为您应该尝试调试问题所在。未正确读取字符串或字符串从未到达列表视图。

如果未读取字符串,请尝试在意图中发送它。如果它被添加到数组中,而不是列表视图中,我会尝试更新适配器,以便它直接从数组中读取。

像这样:

    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);

这可能不是答案,但值得测试。

于 2013-03-03T07:35:27.583 回答