java - android listview doinbackground无法显示任何内容

标签 java android

我想做一个 ListView ,并且我有很多数据想要插入它。
所以我想使用doinbackground。
但是当我使用 doinbackground 时,我的 ListView 再也不会出现, 我该怎么办?
这是我的代码:

    public class Listening extends AppCompatActivity {
    ArrayList<Listenlist> listenlists = new ArrayList<Listenlist>();
    ListView listview;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listening);
        listview = (ListView) findViewById(R.id.list);
    }
    public void seraechsql2(){
        String result = dblisten.executeQuery();
        try{
            JSONArray jsonArray = new JSONArray(result);
            for(int i =0; i < jsonArray.length(); i++) 
            {
                JSONObject jsonData = jsonArray.getJSONObject(i);            
                track=jsonData.getString("track");
                Listenlist team = new Listenlist("T"+track+".mp3");
                listenlists.add(team);
                final ListenlistAdapter adapter = new ListenlistAdapter(this, R.layout.listenlist, listenlists);
                listview.setAdapter(adapter);
            }

        }
        catch(Exception e){}
    }
    class DownloadFileAsync extends AsyncTask<String, String, String> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();        
        }
        @Override
        protected String doInBackground(String... aurl) {
            seraechsql2();// it can not show listview...
            return null;
        }

        protected void onProgressUpdate(String... progress) {}
        @Override
        protected void onPostExecute(String unused) {}
    }

}

谢谢。

最佳答案

您不应该在 doInBackground 中更新 UI,因为它是后台线程。它应该在 onPostExecute 中更新。试试这个代码:

 public class Listening extends AppCompatActivity {
    ArrayList<Listenlist> listenlists = new ArrayList<Listenlist>();
    ListView listview;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listening);
        listview = (ListView) findViewById(R.id.list);
    }
    public void seraechsql2(){
        String result = dblisten.executeQuery();
        try{
            JSONArray jsonArray = new JSONArray(result);
            for(int i =0; i < jsonArray.length(); i++) 
            {
                JSONObject jsonData = jsonArray.getJSONObject(i);            
                track=jsonData.getString("track");
                Listenlist team = new Listenlist("T"+track+".mp3");
                listenlists.add(team);
            }

        }
        catch(Exception e){}
    }
    class DownloadFileAsync extends AsyncTask<String, String, ArrayList<Listenlist>> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();        
        }
        @Override
        protected String doInBackground(String... aurl) {
            seraechsql2();
            return listenlists;
        }

        protected void onProgressUpdate(String... progress) {}
        @Override
        protected void onPostExecute(ArrayList<Listenlist> result) {
            final ListenlistAdapter adapter = new ListenlistAdapter(this, R.layout.listenlist, result);
            listview.setAdapter(adapter);
        }
    }

}

关于java - android listview doinbackground无法显示任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61947210/

相关文章:

java - 我不断收到“java.lang.IllegalArgumentException : Given String is empty or null"and it has something to do with auth = FirebaseAuth. getInstance();”

java - Eclipse 搜索按钮中的 AST

java - 为什么我不能将枚举用于 switch-case 语句?

java - 为什么我在规范记录查询响应中得到错误的 MQIACF_OBJECT_TYPE 值?

java - Android:从子集合中获取字段值

android - 媒体播放器继续播放

android - 为什么我的按钮在第一次点击时不起作用?

java - 如何使用 OVal 框架验证 java pojo int 字段

java - 如何在 DateField 中设置默认日期?

Android ImageView 不会匹配_parent 宽度