Gee*_*Out 2 java android android-listview android-asynctask
我有一个活动,我这样开始:
public class MyProblemsActivity extends ListActivity
{
String[] PROBLEMS = new String[] {"One", "Two", "Three" };
ArrayAdapter adapter;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
adapter = new ArrayAdapter<String>(this,R.layout.my_problems, PROBLEMS);
setListAdapter(adapter);
ListView lv = getListView();
lv.setTextFilterEnabled(true);
Run Code Online (Sandbox Code Playgroud)
这完全没问题.
我遇到的问题是在通过Asynch调用调用远程服务器后,我这样做:
@Override
protected void onPostExecute(String result)
{
PROBLEMS = new String[] {"Hello", "Bye", "Hmmmmmm" };
adapter.notifyDataSetChanged();
}
Run Code Online (Sandbox Code Playgroud)
但屏幕不会更新.我在这里做错了什么,如何使用新值更新屏幕?
谢谢!!
发生了什么事
PROBLEMS = new String[] {"Hello", "Bye", "Hmmmmmm" };
Run Code Online (Sandbox Code Playgroud)
的PROBLEMS是获得参考new字符串数组对象...因此旧参考剩余的,因为它是(不变)..
要纠正它,请使用以下内容:
PROBLEMS.clear();
List<String> newlist = new ArrayList<String>();
newlist.add(..);
..
PROBLEMS.addAll(newlist);
adapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)
这样,新字符串将仅添加到由PROBLEMS指出的现有数组引用中
注:我已经通过参考使用字符串的字符串,而不是[]的ArrayList中提到,要使用的明确()中的addAll()functionalites,你可以修改它的String [],按您的使用..
| 归档时间: |
|
| 查看次数: |
5879 次 |
| 最近记录: |