【发布时间】:2014-04-13 04:34:42
【问题描述】:
我有一个包含许多片段的主要活动,其中一个包含一个列表视图,带有适配器homeworkListAdapter,这个适配器确实显示了homeworkItems 中的任何初始项目。我的活动打开了另一个活动(HomeworkAddActivity,它从用户那里获取一个字符串并将其放入数组homeworkItems,这一切都有效,因为我已经独立检查了每个步骤。但是当我尝试用这个更新列表视图时新项目(使用.notifyDataSetChanged)它没有更新,我已经尝试修复此问题 3-4 小时,请帮助。
代码
MainActivity
public static ArrayAdapter<String> homeworkListAdapter;
public static ArrayList<String> homeworkItems;
....
protected void onCreate(Bundle savedInstanceState) {
....
homeworkItems = new ArrayList<String>();
homeworkListAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, homeworkItems);
....
public static class HomeworkListViewFragment extends Fragment {
....
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(
R.layout.fragment_homework_listview, container, false);
homeworkListView = (ListView) rootView
.findViewById(R.id.homework_listview);
homeworkListView.setAdapter(homeworkListAdapter);
return rootView;
}
HomeworkAddActivity
public class HomeworkAddActivity extends ActionBarActivity {
....
public void buttonAddHomework(View v) {
NavUtils.navigateUpFromSameTask(this);
EditText editText = (EditText) findViewById(R.id.text_new_homework_name);
String homeworkItem = (String) editText.getText().toString();
if (!(TextUtils.isEmpty(homeworkItem))) {
//MainActivity.homeworkList.addItem(homeworkItem);
MainActivity.homeworkItems.add(homeworkItem);
MainActivity.homeworkListAdapter.notifyDataSetChanged();
}
}
}
【问题讨论】:
-
尝试在 buttonAddHomework() 中完全重新创建 homeworkListAdapter。有时 notifyDataSetChanged() 只是因为未知原因无法工作......
-
我已经尝试过(使用不同的代码),但我会再试一次,但我更希望它做得更整洁/正确
-
我又试了一遍你的建议,还是更新列表失败
-
也许
if (!(homeworkItem == null))不会通过?你检查了吗?也尝试使用if (!TextUtils.isEmpty(homeworkItem))- 它同时检查空字符串和空字符串。 -
我尝试将按钮文本更改为
homeworkItems中的第一项(get(0)),同时评论navigateUp,它运行良好,所以所有这些都有效。
标签: java android android-fragments android-listview notifydatasetchanged