Android adapter.notifyDataSetChanged()不工作?

前端之家收集整理的这篇文章主要介绍了Android adapter.notifyDataSetChanged()不工作?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一个应用程序,需要从用户获取输入,将其传递到服务器,该服务器返回 JSON字符串,然后在ListView中显示已解析的内容.我正在通过扩展AsyncTask来完成此任务:
//stripped down version
public class main extends ListActivity {

ArrayList<String> listItems = new ArrayList<String>();
ArrayAdapter<String> adapter;
final EditText input = (EditText)findViewById(R.id.input);


input.addTextChangedListener(new TextWatcher() {    
    public void onTextChanged(CharSequence s,int start,int before,int count) {   
            if(!input.getText().toString().equals("")) {
            new GetDataTask().execute(input.getText().toString());
        }

    }   
});

private class GetDataTask extends AsyncTask<String,Void,ArrayList<String>> {
        protected ArrayList<String> doInBackground(String... query) {

        URL url = new URL("http://myserversaddressgoeshere.com/search/thequerygoeshere");
        URLConnection conn = url.openConnection();
        BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            ArrayList<String> items = new ArrayList<String>();
        //the code that parses the JSON goes here; it writes some strings to items
        return items;
        }

        protected void onPostExecute(ArrayList<String> items) {
            listItems = items;
        adapter.notifyDataSetChanged();
        }
}

}

(这是我的第一篇文章,所以如果我试图使代码块失败,我提前道歉)

在onPostExecute方法中,在设置listItems等于项目后,如果我打印listItems的内容,它们正是我想要的.但是,由于某些原因,当从onPostExecute执行时,adapter.notifyDataSetChanged()似乎什么都不做(当它从主线程调用时,它工作正常).

如果有任何人知道发生了什么和/或如何解决它,我真的很感激.谢谢!

解决方法

你可以试试吗
protected void onPostExecute(ArrayList<String> items) {
        listItems.clear();
        listItems.addAll(items);
        adapter.notifyDataSetChanged();
    }

我希望你已经在做这件事了

adapter = new ArrayAdapter<String>(listItems);

猜你在找的Android相关文章