Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有自定义ArrayAdapter的ListView-线程问题_Java_Android - Fatal编程技术网

Java 具有自定义ArrayAdapter的ListView-线程问题

Java 具有自定义ArrayAdapter的ListView-线程问题,java,android,Java,Android,我正在尝试使用自定义ArrayAdapter创建ListView。 下面是这里的例子。 在下面的代码中,我创建了一个ListActivity。 此列表从自定义ArrayAdapter-OrderAdapter获取其值。 OrderAdapter正在从ArrayAdapter获取其元素 我正在使用runOnUiThread来填充AdWater中的元素。 但是在这个线程的run()方法中,代码将进入无限循环。(见下文评论)。 请检查为什么它没有退出for循环 代码: 试试这个 在OrderAdapt

我正在尝试使用自定义ArrayAdapter创建ListView。 下面是这里的例子。 在下面的代码中,我创建了一个ListActivity。 此列表从自定义ArrayAdapter-OrderAdapter获取其值。 OrderAdapter正在从ArrayAdapter获取其元素

我正在使用runOnUiThread来填充AdWater中的元素。 但是在这个线程的run()方法中,代码将进入无限循环。(见下文评论)。 请检查为什么它没有退出for循环

代码:

试试这个

OrderAdapter

    setList(ArrayList<Order> items);
    {
        this.items.clear();
        this.items.addAll(items);
        notifyDataSetChanged();
    }
编辑你的代码做一些折射…像这样做

  • 在onCreat()中新建SampleTask().execute(); 及

    公共类SampleTask扩展了AsyncTask{

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        //show progress bar here
    
    }
    
    @Override
    protected Void doInBackground(Void... params) {
        //Do heavy work here
        return null;
    }
    @Override
    protected void onPostExecute(Void result) {
    
        super.onPostExecute(result);
    
        //Dissmiss the dialgo
        //call m_adapter.setList(m_orders)
    }
    

您应该使用。非常感谢..它现在正在退出循环,m_适配器正在填充。但是现在它没有填充屏幕上的列表@setListAdapter(this.m_adapter);
不为空且有值?并且您在哪里调用
setListAdapter(this.m_adapter);
抱歉,
this.items.addAll(项);
没有添加值。但即使我使用for循环代替并填充它,仍然没有在
setListAdapter(此.m_适配器)上显示任何内容;
[onCreate方法的最后一行]遵循了您的建议…我相信我的思路是正确的,但面临一个问题..打开了一个新问题,因为它现在与此问题不一致:
    setList(ArrayList<Order> items);
    {
        this.items.clear();
        this.items.addAll(items);
        notifyDataSetChanged();
    }
if (m_orders != null && m_orders.size() > 0) {
            m_adapter.setList(m_orders)  
            }
            m_progressDialog.dismiss();
@Override
protected void onPreExecute() {
    super.onPreExecute();
    //show progress bar here

}

@Override
protected Void doInBackground(Void... params) {
    //Do heavy work here
    return null;
}
@Override
protected void onPostExecute(Void result) {

    super.onPostExecute(result);

    //Dissmiss the dialgo
    //call m_adapter.setList(m_orders)
}