Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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
Android适配器列表在ProgressDialog的线程()内不工作_Android - Fatal编程技术网

Android适配器列表在ProgressDialog的线程()内不工作

Android适配器列表在ProgressDialog的线程()内不工作,android,Android,下面是我不工作的代码,我不明白为什么它说只有创建视图层次结构的原始线程才能接触它的视图。当我想在LoadValues方法内为我的listview设置适配器时。。listView.setAdapteradapter 在android中,只有UI线程可以触摸视图 所以 public class ProgressDialogActivity extends Activity { private ProgressDialog progressDialog; private List

下面是我不工作的代码,我不明白为什么它说只有创建视图层次结构的原始线程才能接触它的视图。当我想在LoadValues方法内为我的listview设置适配器时。。listView.setAdapteradapter


在android中,只有UI线程可以触摸视图

所以

public class ProgressDialogActivity extends Activity {

    private ProgressDialog progressDialog;  
    private ListView listView;
    private ArrayList<String> lstValores;
    private Handler progressBarHandler = new Handler();

    private int mProgressStatus, mProgressTotal;    

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);              

        lstValores = new ArrayList<String>();
        listView = (ListView) findViewById(R.id.listView1);

        this.LoadValues();

    }//onCreate   


    public void LoadValues(){

        progressDialog = new ProgressDialog(ProgressDialogActivity.this);
        progressDialog.setTitle("Aguarde..");
        progressDialog.setMessage("Cargando lista..");
        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        progressDialog.setProgress(0);
        progressDialog.show();

        new Thread(new Runnable() {         
            public void run() {         

                mProgressTotal = (int) 1000;

                try {
                    for (int i = 0; i < mProgressTotal; i++) {

                        lstValores.add("valor " + i);

                        mProgressStatus = (int) ((i * 100) / mProgressTotal);

                        progressBarHandler.post(new Runnable() {                        
                            public void run() {
                                progressDialog.setProgress(mProgressStatus);
                                }
                            });                 
                        }// end for      

                        ArrayAdapter<String> adapter = new ArrayAdapter<String>(ProgressDialogActivity.this, 
                                                                                R.layout.textviewlist_layout, 
                                                                                lstValores);
                        listView.setAdapter(adapter);                       
                        progressDialog.dismiss();

                } catch (Exception e) {
                    e.printStackTrace();                
                }

            }// end run
        }).start();// end Thread        
    }// end LoadValues


} // Activity
progressBarHandler.post(new Runnable() {
     public void run(){
          listView.setAdapter(adapter);                       
     }                        
}