ListView onItemClickListener 与在 Adapter 中使用自定义侦听器有什么区别?



我有一个带有编辑文本项的列表视图我的列表视图是可点击的。单击时,将打开详细信息屏幕。 每个列表视图行都有一个编辑文本。单击"编辑文本"时,键盘将打开并输入数字。

由于如果我的列表行中有可聚焦的项目,我无法使用 onItemClickListener,因此我选择使用自定义侦听器。在适配器中:

@NonNull
@Override
public View getView(int position, View convertView, @NonNull ViewGroup parent) {
convertView.setOnClickListener(view -> {
onCustomClickListener.onItemClick(position);
});
}

onCustomClickListener 在片段中实现。 这个解决方案对我来说是预期的。

我的问题是 onItemClickListener 和这个自定义侦听器有什么区别?onItemClickListener是否以某种方式进行了优化,这就是我们通常使用它的原因?

列表视图中,我们不能同时拥有行(可聚焦)和也可以聚焦的项目(editText)。如果我们在列表行中有编辑文本,那么如果我们不添加以下内容,则不会调用onItemClickListenerandroid:descendantFocusability="blocksDescendants"在列表行.xml布局中。

谢谢。

由于我看不到您的片段代码,我只能猜测,存在某种开关情况,它按位置选择 EditView,对吧?使用这种侦听器没有优化。正如你所说,

由于如果我在列表行中有可聚焦的项目,我无法使用 onItemClickListener

因此,您实现对每个行视图的设置,从片段调用自定义侦听器的侦听器只是处理引用问题的黑客。

最新更新