2017-08-24 5 views
-1

私はデバイスにインストールされているアプリケーションのリストを取得してアダプタに設定するlistviewを含むアプリを持っていますが、デバイスにインストールされているアプリのリストを取得するときにアプリをフリーズするという問題があります。バックグラウンドスレッドを使用してリストビューアダプタでデータを取得および設定する方法は?

AsyncTask.execute(new Runnable() { 
     @Override 
     public void run() { 
      final List<CWhiteListAppsModel> installedApps = getInstalledApps(); 
      getActivity().runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        installedAppAdapter = new CWhiteListAppsAdapter(mContext, installedApps, CWhiteListAppsFragment.this); 
        appCount(); 
        userInstalledApps.setAdapter(installedAppAdapter); 
       } 
      }); 

     } 
    }); 

答えて

0

このアプリをshwingのProgressDialoginsteadが表示されます内部クラス
としてAsyncTaskを実装してみてください - :

コードがあることは何私がやるんthread.Howこれらのリストを取得し、背景を使用してアダプタにそれを設定したいですハンギング、それが助けて欲しい!

private class YourAsyncTask extends AsyncTask<String, String, ArrayList<yourclass>> { 

     ProgressDialog progressDialog; 
     @Override 
     protected void onPreExecute() { 
      // start loading animation maybe? 
      progressDialog = ProgressDialog.show(DictionarySscWords.this, 
        "APPname", 
        "Loading...."); 
     } 

    @Override 
    protected ArrayList<yourclass> doInBackground(String... params) { 
     //fetch from database here 
     return temp; 


    } 

    @Override 
    protected void onPostExecute(ArrayList<yourclass> yourclass) { 
     progressDialog.dismiss(); 
     //update list view here 
     list.setAdapter(new MyAdapter(yourclass)); 
    } 
} 
関連する問題