我有一个基本回收适配器,如下所示:
public abstract class BaseRecyclerViewAdapter extends RecyclerView.Adapter<BaseViewHolder> {
public @NotNull BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
ViewDataBinding binding = DataBindingUtil.inflate(layoutInflater, viewType, parent, false);
return new BaseViewHolder(binding);
}
public void onBindViewHolder(BaseViewHolder holder, int position) {
Object obj = getObjForPosition(position);
OnItemClickListener clickListener = onItemClickListener();
holder.bind(obj, clickListener, position);
}
@Override
public int getItemViewType(int position) {
return getLayoutIdForPosition(position);
}
protected abstract Object getObjForPosition(int position);
protected abstract int getLayoutIdForPosition(int position);
protected abstract OnItemClickListener onItemClickListener();
}
监听器
:
public interface OnItemClickListener {
void onItemClick(Object object, View view, int position);
}
基本视图保持架为:
public class BaseViewHolder extends RecyclerView.ViewHolder {
private final ViewDataBinding binding;
public BaseViewHolder(ViewDataBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
public void bind(Object obj, OnItemClickListener clickListener, int position) {
itemView.setOnClickListener(v -> clickListener.onItemClick(obj, itemView, position));
binding.setVariable(BR.obj, obj);
binding.executePendingBindings();
}
}
假设ViewHolder有两个视图,一个TextView和一个ImageView。如何对ViewHolder的itemview中的所有项目实现ClickListener
我认为我们不能从基本适配器为itemView中的特定项设置clickListener。但我们可以将布局的侦听器设置为变量。
为此,请在布局中的数据标记内定义clickListener变量。
<data>
<variable
name="clickListener"
type="com.package.clickListener" />
</data>
然后从基本适配器为布局设置clickListener
public void bind(Object obj, OnItemClickListener clickListener, int position) {
itemView.setOnClickListener(v -> clickListener.onItemClick(obj, itemView, position));
binding.setVariable(BR.clickListener,clickListener)//set listener here
binding.setVariable(BR.obj, obj);
binding.executePendingBindings();
}
然后,您可以在单击特定项时调用侦听器方法。
<Button
android:id="@+id/btn"
android:onClick="@{()-> callListener.onItemClick()}"
/>
我正在制作Instagram克隆应用程序。我想添加双击功能。如何在ImageView上设置双击侦听器?
在我的应用程序中,我想在我的首选项activity中的单个preferencelist项上设置一个click listener,问题是我只能找到如何在主listprefernce本身上设置一个click listener,有没有一种方法我可以设置一个键到单个列表项,这样当我设置一个OnPreferenceClickListener时,我可以执行一些列表项特定的代码?
这只是一个例子。我有一个输入流,我想为它设置一个侦听器。我怎么能做到。第一种方法是创建一个后台线程,反复检查它。 但我认为没有线。睡眠会浪费cpu周期。和它一起;它会降低获取事件的准确性。假设输入流是一个无法访问的输出流正在写入的文件。这只是一个例子,说明我不知道这种后台线程的运行时成本。请解释一下。
我正在处理一些奇怪的遗留代码。他们有一个实现JPanel的自定义对象。这个< code>JPanel对象是主应用程序中的第二个弹出屏幕。我遇到的问题是检测辅助弹出屏幕何时关闭。 我尝试为该类实现一个,但是当我尝试添加它时,没有与此对象关联的。我假设这是因为他们正在使用一个自定义对象,它是一个嵌入式弹出屏幕。 我尝试使用以下命令检索: 这在上失败。我不知道为什么在这个页面上检测右上角的“x”关闭按钮
我知道java.nio.file包提供了一个文件更改通知API(观察服务API)。
我试图用我的键控制火箭动画,并尝试使用KeyListener方法,然而,我的程序对我的按键没有反应。我尝试将keylistener添加到我的JFrame,但它没有调用它,因为JFrame是一个单独的静态方法。如果你运行它,你将没有图像,但是,如果你运行,请替换为矩形。你能说出我的错误吗。提前谢了。 下面是我的代码: