【问题标题】:Android: Disable ListView once clicked?Android:单击后禁用ListView?
【发布时间】: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 并没有得到任何改善!

标签: android sqlite listview


【解决方案1】:

尝试使用禁用 AsnykTask 中的列表 -> PreExecute 并启用 PostExecute 中的列表..

【讨论】:

    猜你喜欢
    • 2012-10-20
    • 2013-03-30
    • 2017-08-06
    • 2014-10-14
    • 1970-01-01
    • 2014-10-20
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多