如何在 Android Studio 的回收站视图中删除特定文件?

问题描述

我正在 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);

希望它会在发现任何错误时通知我,我很乐意帮助您。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...