gpt4 book ai didi

java - 将监听器设置为自定义 View

转载 作者:行者123 更新时间:2023-11-29 18:31:07 25 4
gpt4 key购买 nike

我有一个 View ,它动态添加了一个自定义 View ,其中包含一个checkbox、一个edittext和一个图像按钮。我想将监听器添加到 imagebutton 以删除 自定义 View (或者将可见性设置为 gone 如果 imagebutton按下。这是我目前的代码,从更基本的东西开始:

 public void addView() {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View view = inflater.inflate(R.layout.item_task_list, null);
ImageButton img_btn = findViewById(R.id.delete);
EditText name_et = findViewById(R.id.todo);
CheckBox done_cb = findViewById(R.id.done);
img_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Do something
}
});
parentLayout.addView(view, parentLayout.getChildCount() - 1);

只要我没有监听器,它就可以工作。有了它,我得到了这个错误:java.lang.NullPointerException:尝试在空对象引用上调用虚方法“void android.widget.ImageButton.setOnClickListener(android.view.View$OnClickListener)”

如果我像这样设置监听器,它会起作用:img_btn.setOnClickListener(this); 然后使用 Activity 中的 OnClick 方法。我有:

case R.id.delete:
v.getParent().
break;

但是我无法将可见性设置为gone,也无法将其删除。

这是我第一次添加自定义 View ,所以我不确定我错过了什么,是否应该创建一个类,从其他方式设置监听器,或者如何访问它.

最佳答案

尝试从膨胀 View 调用 findViewById。它应该有所帮助。

public void addView() {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View view = inflater.inflate(R.layout.item_task_list, null);
ImageButton img_btn = view.findViewById(R.id.delete);
EditText name_et = view.findViewById(R.id.todo);
CheckBox done_cb = view.findViewById(R.id.done);
img_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Do something
}
});
parentLayout.addView(view, parentLayout.getChildCount() - 1);

关于java - 将监听器设置为自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56234548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com