问题描述
我正在 Android Studio 上开发这个日记应用,我希望人们能够删除他们的条目,但我不知道如何删除。
这是 Textlistadapter (recyclerview):
public class Textlistadapter extends RecyclerView.Adapter<Textlistadapter.TextViewHolder>{
private File[] allTextFiles;
private TimeAgo timeAgo;
private onTextItemListClick onTextItemListClick;
public Textlistadapter(File[] allTextFiles,onTextItemListClick onTextItemListClick) {
this.allTextFiles = allTextFiles;
this.onTextItemListClick = onTextItemListClick;
}
@NonNull
@Override
public TextViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.single_text_item,parent,false);
timeAgo = new TimeAgo();
return new TextViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull Textlistadapter.TextViewHolder holder,int position) {
holder.cardText.setText(allTextFiles[position].getName());
holder.textCardTitle.setText(timeAgo.getTimeAgo(allTextFiles[position].lastModified()));
}
@Override
public int getItemCount() {
return allTextFiles.length;
}
//Inner Class
public class TextViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private final Context context;
//Adding components
private TextView textCardTitle;
private Button cardText;
private MaterialButton textCardBtn;
private String recordFile;
private ImageButton deleteText;
public TextViewHolder(@NonNull View itemView) {
super(itemView);
textCardTitle = itemView.findViewById(R.id.text_card_title);
cardText = itemView.findViewById(R.id.card_text);
textCardBtn = itemView.findViewById(R.id.text_card_btn);
context = itemView.getContext();
deleteText = itemView.findViewById(R.id.delete_menu_btn);
textCardBtn.setonClickListener(this);
}
@Override
public void onClick(View v) {
onTextItemListClick.onClickListener(allTextFiles[getAdapterPosition()],getAdapterPosition());
final Intent intent;
intent = new Intent(context,DiaryEntry.class);
intent.putExtra(Intent.EXTRA_TEXT,cardText.getText());
context.startActivity(intent);
}
}
//Interface
public interface onTextItemListClick{
void onClickListener(File file,int position);
}
}
这是它来自的片段:
@Override
public void onViewCreated(@NonNull View view,@Nullable Bundle savedInstanceState) {
super.onViewCreated(view,savedInstanceState);
textList = view.findViewById(R.id.text_list_view);
//reversing audioList
linearlayoutmanager linearlayoutmanager = new linearlayoutmanager(getContext());
linearlayoutmanager.setReverseLayout(true);
linearlayoutmanager.setStackFromEnd(true);
textList.setLayoutManager(linearlayoutmanager);
String path = getActivity().getFilesDir().getAbsolutePath();
File directory = new File(path);
allTextFiles = directory.listFiles();
textlistadapter = new Textlistadapter(allTextFiles,this);
textList.setHasFixedSize(true);
textList.setAdapter(textlistadapter);
}
接下来我可以尝试什么?
解决方法
首先你需要在 TextViewHolder 中为 deleteText 设置 clickListener
像这样。
deleteText.setOnClickListener(this);
然后在你的适配器函数的onClick里面
int position = getAdaptorPosition;
allTextFiles.remove(position);
notifyItemRemoved(position);
希望它会在发现任何错误时通知我,我很乐意帮助您。