为什么我的列表视图没有更新?
Why is my listview not updating?
我已经解决了我的问题。谁能告诉我为什么列表没有更新新值?我已经尝试了所有的刷新命令,也许我遗漏了什么?
public class DropboxFragment extends ListFragment {
String[] values;
ArrayAdapter<String> adapter;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
values = new String[] { "Android", "iPhone", "WindowsMobile",
"Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
"Linux", "OS/2" };
adapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
values = new String[] { "IT", "WORKED"};
l.invalidateViews();
adapter.notifyDataSetChanged();
l.refreshDrawableState();
}
}
尝试用新值
初始化 ArrayAdapter
而不是 notifyDataChanged
嗯...您没有将新字符串传递给适配器,您只是在创建一个新数组。
记住 Java 传递的是引用值,而不是引用本身,因此适配器中的值与 activity 中的引用不同,尽管它指向相同的引用目的。当您更改 activity 中指向新对象的引用时,您实例化适配器并不知道这一点。
试试这个:
values = new String[] { "IT", "WORKED"};
adapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
在 onListItemClick
中更改 values
不会更改列表适配器。
您需要在给定的视图中找到所需的文本视图并相应地更改其文本。
public void onListItemClick(ListView l, View v, int position, long id) {
TextView tv = (TextView)v; // assuming that the only view created with the ArrayAdapter is a text view
tv.setText("new text");
}
您必须添加:notifyDataSetChanged()
setListAdapter(adapter);
adapter.notifyDataSetChanged();
我已经解决了我的问题。谁能告诉我为什么列表没有更新新值?我已经尝试了所有的刷新命令,也许我遗漏了什么?
public class DropboxFragment extends ListFragment {
String[] values;
ArrayAdapter<String> adapter;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
values = new String[] { "Android", "iPhone", "WindowsMobile",
"Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
"Linux", "OS/2" };
adapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
values = new String[] { "IT", "WORKED"};
l.invalidateViews();
adapter.notifyDataSetChanged();
l.refreshDrawableState();
}
}
尝试用新值
初始化ArrayAdapter
而不是 notifyDataChanged
嗯...您没有将新字符串传递给适配器,您只是在创建一个新数组。
记住 Java 传递的是引用值,而不是引用本身,因此适配器中的值与 activity 中的引用不同,尽管它指向相同的引用目的。当您更改 activity 中指向新对象的引用时,您实例化适配器并不知道这一点。
试试这个:
values = new String[] { "IT", "WORKED"};
adapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
在 onListItemClick
中更改 values
不会更改列表适配器。
您需要在给定的视图中找到所需的文本视图并相应地更改其文本。
public void onListItemClick(ListView l, View v, int position, long id) {
TextView tv = (TextView)v; // assuming that the only view created with the ArrayAdapter is a text view
tv.setText("new text");
}
您必须添加:notifyDataSetChanged()
setListAdapter(adapter);
adapter.notifyDataSetChanged();