【发布时间】:2011-11-17 15:49:55
【问题描述】:
我有一个列表视图,当单击列表视图中的项目时,我使用从列表视图的 onitemclicklistener 调用的 AyscTask 将详细信息保存到 sqlite db。当用户随机单击许多项目时,应用程序会崩溃,因为应用程序会尝试以更奇特的方式访问数据库。当用户在加载警报出现之前足够快地单击列表视图中的多个项目时,就会发生这种情况。
如何防止这种情况发生?我试图在列表视图的 onitemclick 方法中禁用列表视图,但它也不起作用。
我的代码
//setting up the listview
ListView lv = (ListView) findViewById(android.R.id.list);
setListAdapter(new TypeArrayAdapter(TypeSelectActivity.this, R.layout.row_type, typeList));
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
sectionid = Integer.parseInt(LocationWebService.incidentTypeSectionId
.get(arg2));
incidentid1 = Integer
.parseInt(LocationWebService.incidentTypeId
.get(arg2));
LocationWebService.IncidentTypeID = incidentid1;
LocationWebService.sectionID = sectionid;
new DBTasks().execute(arg2);
TextView tv=(TextView)arg1.findViewById(R.id.label_type);
TypeString=tv.getText().toString();
Log.v("TypeSelect", TypeString);
}
});
提前感谢您的宝贵时间。
【问题讨论】:
-
使用
ProgressDialog暂时阻止用户界面。 -
同步进行数据库操作。因此,对于一项点击,如果数据库操作正在按照 Adil Soomro 所说的使用进度对话框进行,则用户无法点击第二项。
-
问题是在进度对话框出现之前,用户点击了另一个出现问题的列表 datz :(
-
你能发布你如何解决它的代码吗?我遇到了同样的问题,但使用 AsyncTask 并没有得到任何改善!