如何在android中的活动开始时禁用按钮的单击事件检查
Posted
技术标签:
【中文标题】如何在android中的活动开始时禁用按钮的单击事件检查【英文标题】:How to disable click events checking of button at the starting of activity in android 【发布时间】:2016-04-28 16:11:32 【问题描述】:我正在创建一个带有文本和按钮的列表视图,该列表视图中的数据是从异步任务中填充的,在这里我正在使用类似 的对话框中显示该列表视图。我的问题是当用户选择列表视图中存在的“微调器”值并且在对话框弹出时,我在微调器的onItemclick
中编写的异步任务正在执行,像这样连续显示
。请帮我解决这个问题,很抱歉提出这样的问题。这是我的适配器代码,用于执行单击取消按钮
leaves_type.setOnItemSelectedListener(new OnItemSelectedListener()
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id)
// leaves_type_string = leaves_type.getSelectedItem().toString();
new update_leave_entry_breakup_values().execute("UpdateValues",
"1082", id_string, leaves_type.getSelectedItem().toString(), username, "",
"", "", "", "", "", "");
@Override
public void onNothingSelected(AdapterView<?> parent)
);
这是我的异步任务:
class update_leave_entry_breakup_values extends
AsyncTask<String, integer, String>
@Override
protected void onPreExecute()
// TODO Auto-generated method stub
super.onPreExecute();
progressdialog_view.setMessage("Updating leaves...");
progressdialog_view.show();
@Override
protected String doInBackground(String... params)
// TODO Auto-generated method stub
String TempMethod = params[0];
String Flag = params[1];
String value1 = params[2];
String value2 = params[3];
String value3 = params[4];
String value4 = params[5];
String value5 = params[6];
String value6 = params[7];
String value7 = params[8];
String value8 = params[9];
String value9 = params[10];
String value10 = params[11];
try
SoapObject request = new SoapObject(NAME_SPACE, TempMethod);
request.addProperty("Flag", Flag);
request.addProperty("value1", value1);
request.addProperty("value2", value2);
request.addProperty("value3", value3);
request.addProperty("value4", value4);
request.addProperty("value5", value5);
request.addProperty("value6", value6);
request.addProperty("value7", value7);
request.addProperty("value8", value8);
request.addProperty("value9", value9);
request.addProperty("value10", value10);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE android_HttpTransport = new HttpTransportSE(URL);
Android_HttpTransport.debug = true;
Android_HttpTransport.call(NAME_SPACE + TempMethod, envelope);
String responseXml = envelope.getResponse().toString();
return responseXml;
catch (Exception ex)
ex.printStackTrace();
return null;
@Override
protected void onPostExecute(String result)
// TODO Auto-generated method stub
super.onPostExecute(result);
progressdialog_view.dismiss();
if (result == null)
Toast.makeText(context, "Error while reading data",
Toast.LENGTH_SHORT).show();
else if (result.equals("0"))
Toast.makeText(context, "Error while Updating data",
Toast.LENGTH_SHORT).show();
else
Toast.makeText(context, "Update Success",
Toast.LENGTH_SHORT).show();
【问题讨论】:
progressdialog.setCancelable(true); progressdialog.setCanceledOnTouchOutside(true);
你已经尝试了progressdialog.setCancelable(true);就像@IntelliJAmiya 评论一样,然后没有得到解决方案,所以你必须描述更多关于你的问题
感谢您的快速回复..它不工作老兄,它不是进度对话框的问题我想是这样..:(@IntelliJAmiya
我编辑了我的问题@RaviVGHL
【参考方案1】:
从您的点击事件中删除notifyDataSetChanged();
,
final Button cancel = (Button) row.findViewById(R.id.btn_cancel);
cancel.setTag(position);
cancel.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
int tag_position = (Integer) v.getTag();
objects.remove(tag_position);
notifyDataSetChanged(); // remove this
new cancel_leave_entry_breakup_values().execute("UpdateValues", "1083",
leave_app.getID(), leave_app.getUsername().toString(),
"", "", "", "", "", "", "", "");
);
据我说,您调用了您的适配器两次。你需要调用一次。
当你想像OnRestart()
方法一样刷新listview的数据时使用notifyDataSetChanged();
。
【讨论】:
但是我在这里写适配器我们如何在侧适配器@Amit Vaghela 中写重启方法 不,这是一个使用 notifyDataSetChanged() 的例子;我是说你两次调用 asynctask 。只调用一次, new cancel_leave_entry_breakup_values().execute("UpdateValues", "1083", leave_app.getID(), leave_app.getUsername().toString(), "", "", "", "", " ", "", "", ""); 我只在这里打过一次电话,你能清楚地告诉我@Amit Vaghela 移除 notifyDataSetChanged();从 onclick 并尝试@lakshman 是的,伙计,它的工作..谢谢,但我需要调用它,因为当用户单击按钮 @Amit Vaghela 时我需要刷新该列表以上是关于如何在android中的活动开始时禁用按钮的单击事件检查的主要内容,如果未能解决你的问题,请参考以下文章
单击按钮时如何将文本视图从一件事切换到另一件事 - Android