java - Android Studio上的ToDo List-无法解决方法
问题描述
我在创建任务时遇到问题,我在其中长按将删除的项目。我不确定如何解决这个问题。显然,这应该在那里,我已经宣布了。检查我评论的地方。OnItemLongClicked 未被识别。那就是我遇到麻烦的地方。我是新手,所以请帮忙!
package com.example.mysimpletodo;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
public class itemsAdapter extends RecyclerView.Adapter<itemsAdapter.ViewHolder> {
public interface onLongClickListener {
void onItemLongClicked(int position);
}
List<String> items;
View.OnLongClickListener longClickListener;
public itemsAdapter(List<String> items, View.OnLongClickListener longClickListener) {
this.items = items;
this.longClickListener = longClickListener;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View todoView = LayoutInflater.from(parent.getContext()).inflate(android.R.layout.simple_list_item_1, parent, false);
return new ViewHolder(todoView);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
String item = items.get(position);
holder.bind(item);
}
@Override
public int getItemCount() {
return items.size();
}
class ViewHolder extends RecyclerView.ViewHolder{
TextView tvItem;
public ViewHolder(@NonNull View itemView) {
super(itemView);
tvItem = itemView.findViewById(android.R.id.text1);
}
public void bind(String item) {
tvItem.setText(item);
tvItem.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
longClickListener.OnItemLongClicked(getAdapterPosition());
//check for this line again. I have a problem here where OnItemLongClicked is not recognized and stays red. How come it is not recognizing it and it's recognized above.
return true;
}
});
}
}
}
解决方案
将您的绑定方法签名更改为:
public void bind(String item, final LongClickListener longClickListener) {
tvItem.setText(item);
tvItem.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
longClickListener.onItemLongClicked(getAdapterPosition());
return true;
}
});
}
如果您没有在某处传递它,您的 ViewHolder 类不知道您声明的 longClickListener。
推荐阅读
- powershell - 使用 Powershell 从文件重命名范围
- java - 连续输入(输入/扫描)两个相同的数字以打破循环“while”Java
- c# - “输入字符串的格式不正确” RFID 卡通过 USB 读取
- r - R/闪亮的变化选项卡和点击动态生成的链接上的输入
- java - 使用 Retrofit 2 在 android 中面临转换器问题
- javascript - 如何要求 Stripe Elements 字段中的信用卡字段?
- uitableview - SAPUI5:如何向 ui.table 的列菜单添加自定义功能?
- apache-kafka - 当集群中的 4 个代理中有 3 个代理时,kafka 主题创建失败
- javascript - 在页面加载时默认显示内容?
- apache-spark - 如何在 PySpark 中创建具有偏移量的 DStream(使用 KafkaUtils.createDirectStream)?当kafka是集群时?