繁体   English   中英

Android adapter.notifyDataSetChanged()不起作用?

[英]Android adapter.notifyDataSetChanged() not working?

我正在编写一个应用程序,需要从用户那里获取输入,将其传递给服务器,该服务器返回一个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等于items之后,如果我打印listItems的内容,它们就是我想要的。 但是,由于某种原因,当从onPostExecute执行时,adapter.notifyDataSetChanged()似乎什么都不做(当它从主线程调用时,它工作正常)。

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

你能试试吗

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

而且我希望你已经做了这件事

adapter = new ArrayAdapter<String>(listItems);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM