如何使列表不可点击?

时间:2012-08-14 11:33:55

标签: android listview clickable

我正在使用AsyncTask类来搜索单词,所以我想在列表中出现“搜索”这个词 而proccess被执行

好的,我想要做的是在搜索完成之前有一个不可点击的列表,以便,如果点击搜索单词没有任何反应......

这是正确的方法吗? 非常感谢!

4 个答案:

答案 0 :(得分:1)

在加载,搜索和获取数据时,您可以在ListView中显示标题视图或/和页脚视图。只需在设置适配器之前添加这些视图。当您搜索某个字词时,请拨打ListView上的setClickable(false)并启用页眉/页脚视图,例如,通过调用addFooterView(mFooterView)来显示您的消息。

请注意,您必须在设置适配器之前添加视图。

示例:

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

在此之后,您可以致电addFooterView()来显示您的消息,并致电removeFooterView()隐藏您的消息。

答案 1 :(得分:1)

我不知道任何直接解决方案(必须有),但我的方法是:

<强> onPreExecute

  1. 制作 ListView setEnabled(false),使其无法点击。
  2. 将自定义布局(包含搜索消息)的可见性设置为setVisibility(View.VISIBLE),以便在 ListView 顶部显示。为此,您需要将{em> ListView 和自定义布局合并到FrameLayout
  3. <强> onPostExecute

    • 在更改 ListView 内容
    • 后,只需撤消该过程即可

    通过这种方式,您可以显示覆盖整个 ListView 的透明/半透明区域,并在其顶部或中心显示消息。

    我在我的一个项目中使用过这种方法,看起来非常不错:)

答案 2 :(得分:0)

当您使用AsyncTask时,您可以ProgressDialog使用onPreExecute方法中的“搜索”消息,并在完成后将其关闭(在onPostExecute中) 。

这样,您的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     
}

答案 3 :(得分:0)

为什么不使用通知来显示查询正在执行?

因为它可以确保即使你去其他应用程序继续搜索。

您提出的问题意味着您的应用用户需要等待很长时间才能搜索单词并且不执行任何其他操作,这对于人类应用程序的设计是不可取的