我使用的是的AsyncTask类搜索词,所以我希望出现的单词列表 “搜索”在执行proccess如何使列表不可点击?
好吧,我想要做的是有一个非可点击列表,直到搜索完成,为了,如果搜索单词被点击,什么也没有发生......
这是正确的方法吗? 非常感谢!
我使用的是的AsyncTask类搜索词,所以我希望出现的单词列表 “搜索”在执行proccess如何使列表不可点击?
好吧,我想要做的是有一个非可点击列表,直到搜索完成,为了,如果搜索单词被点击,什么也没有发生......
这是正确的方法吗? 非常感谢!
当你加载,搜索和获取数据可以显示标题视图或/和你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()
隐藏你的消息。
当您使用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
}
我不知道任何直接的解决方案(其中必须有),但我的方式做,这将是:
onPreExecute:
setEnabled(false)
使它不能点击。setVisibility(View.VISIBLE)
,以使其在您的ListView之上可见。为此,您需要将您的ListView和自定义布局合并为FrameLayout
。onPostExecute:
通过这样做后,就可以显示一个透明/半透明区域覆盖整个ListView在其顶部或中间有消息。
我用在我的项目之一这种方法,它看起来非常不错,为什么不使用通知表明执行查询时:)
?
因为它可以确保即使您到其他应用程序仍继续搜索。
你问的问题意味着您的应用程序等待很长的时间来搜索一个词,别的什么也不做,这是不可取的应用为人类设计
谢谢,但setClickable(布尔)只是用户我需要:) – BamsBamx 2012-08-14 11:50:56
没有probs。无论是这种方式还是那种方式,都必须继续编码:) – waqaslam 2012-08-14 11:58:20