0

AsyncTask クラスを使用して単語を検索しているので、プロセス実行中に「検索中」という単語をリストに表示したい

さて、私がやりたいのは、検索が完了するまでクリックできないリストを作成することです。検索する単語をクリックしても何も起こらないようにするためです...

これを行う正しい方法はどれですか? どうもありがとう!

4

4 に答える 4

1

データのロード、検索、および取得中に、ヘッダー ビューまたはフッター ビューを に表示できますListView。アダプターを設定する前に、これらのビューを追加するだけです。単語を検索するときは、 を呼び出しsetClickable(false)ListViewヘッダー/フッター ビューを有効にします。たとえば、 を呼び出しaddFooterView(mFooterView)てメッセージを表示します。

アダプターを設定する前に、ビューを追加する必要があることに注意してください。

例:

LayoutInflater inflater = getLayoutInflater();
mFooterView = inflater.inflate(R.layout.footer, null, false);
mListView.addFooterView(mFooterView);       
mListView.setAdapter(mAdapter);

この後、addFooterView()メッセージを表示するために電話をかけ、メッセージを非表示にするために電話removeFooterView()してください。

于 2012-08-14T11:40:56.333 に答える
1

直接的な解決策はわかりませんが(あるはずです)、これを行う私の方法は次のとおりです。

onPreExecute :

  1. クリックできないようにListView を作成します。setEnabled(false)
  2. ListViewsetVisibility(View.VISIBLE)の上に表示されるようにするには、カスタム レイアウト (検索メッセージを含む) の可視性を に設定します。そのためには、ListViewとカスタム レイアウトを.xml で組み合わせる必要があります。FrameLayout

onPostExecute :

  • ListViewの内容を変更したら、プロセスを元に戻すだけです

このようにすることで、ListView全体を覆う透明/半透明の領域を表示し、その上または中央にメッセージを表示できます。

私は自分のプロジェクトの1つでこのアプローチを使用しましたが、かなり良さそうです:)

于 2012-08-14T11:43:20.113 に答える
0

を使用しているので、メソッド内で「検索中」というメッセージとともにAsyncTaskを使用し、完了したらそれを閉じることができます ( 内)。ProgressDialogonPreExecuteonPostExecute

このようにして、ListView も無効になります。

@Override
protected void onPreExecute() {     
    super.onPreExecute();       
    mProgressDialog = ProgressDialog.show(mContext, message, "Please wait...");
    mProgressDialog.setCancelable(false);
}

@Override
protected void onPostExecute(String result) {
    super.onPostExecute(result);
    if(mProgressDialog != null && mProgressDialog.isShowing())
        mProgressDialog.dismiss();

   // set data for listview     
}
于 2012-08-14T11:39:26.163 に答える
0

通知を使用して、クエリが実行中であることを示してみませんか?

他のアプリに出かけても検索を継続できるためです。

あなたが尋ねた質問は、あなたのアプリのユーザーが単語を検索するのに長時間待っていることを暗示しています。これは、人間向けのアプリの設計にとって望ましくありません

于 2012-08-14T11:47:42.890 に答える