【发布时间】:2019-11-11 18:45:23
【问题描述】:
我有一个显示在一个 Java 活动中的发票列表,并且我提供了单击其中一个发票以打开一个显示其详细信息的新活动的功能(使用意图)。问题是,新活动不会立即打开,如果用户在加载之前多次点击发票,它们都会被加载到屏幕上,用户必须退出所有这些。
我试图摆弄以解决此问题,但我不知道从哪里开始,我正在寻找某种功能,可以阻止任何点击执行任何操作,直到第一个加载完成。我将在下面包含我的方法的代码。
final ListView listView = root.findViewById(R.id.invoices_list);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent showDetailedInvoice = new Intent(getActivity(), DetailedInvoiceActivity.class);
try {
Invoice invoice = new Invoice(invoices.getJSONObject(position));
showDetailedInvoice.putExtra("invoice", invoice);
showDetailedInvoice.putExtra("user", user);
startActivity(showDetailedInvoice);
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
【问题讨论】:
-
listView.setOnItemClickListener(null); -
我建议采取措施通过延迟查询(如果它们出于某种原因对 UI 线程造成压力)和昂贵的布局来立即打开活动(如果有的话)。在任何情况下,都应该可以使其响应足够快,以降低多次点击的风险。此外,您可以将活动标记为 singleTask 以使其作为单例工作:inthecheesefactory.com/blog/…
标签: java android android-fragments android-intent android-activity