Java 删除项目时如何刷新recyclerView?

Java 删除项目时如何刷新recyclerView?,java,android,database,android-studio,android-recyclerview,Java,Android,Database,Android Studio,Android Recyclerview,我有KelimeleriGoster.class。İts将添加的单词添加到数据库中。此类中有recyclerview项 我想在单击“删除”按钮时删除live。İ想自动刷新我的列表吗 KelimeleriGoster.class package com.tcoding.kelimeezberlectii.Adapter; 导入android.content.Context; 导入android.view.LayoutInflater; 导入android.view.view; 导入androi

我有
KelimeleriGoster.class
。İts将添加的单词添加到数据库中。此类中有recyclerview项

我想在单击“删除”按钮时删除live。İ想自动刷新我的列表吗

KelimeleriGoster.class
package com.tcoding.kelimeezberlectii.Adapter;
导入android.content.Context;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.Button;
导入android.widget.TextView;
导入androidx.annotation.NonNull;
导入androidx.recyclerview.widget.recyclerview;
导入com.tcoding.kelimeezberlectii.R;
导入com.tcoding.kelimezberlectii.Sınıflar.Kelimeler;
导入com.tcoding.kelimeezberlectii.Veritabani.Veritabani;
导入com.tcoding.kelimeezberlectii.Veritabani.VeritabaniDao;
导入org.w3c.dom.Text;
导入java.util.ArrayList;
公共类KelimeleriGosterAdapter扩展了RecyclerView.Adapter{
私人语境;
私人ArrayList kelimelerArrayList;
私人维塔巴尼vt;
公共KelimeleriGosterAdapter(上下文上下文,ArrayList kelimelerArrayList){
this.context=上下文;
this.kelimerarylist=kelimerarylist;
}
@非空
@凌驾
public KelimeViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType){
View=LayoutFlater.from(parent.getContext()).inflate(R.layout.cardviewdeneme,parent,false);
返回新的KelimeViewHolder(视图);
}
@凌驾
public void onBindViewHolder(@NonNull KelimeViewHolder,int位置){
最终Kelimeler k=kelimelerArrayList.get(位置);
holder.textViewEng.setText(k.getIngilizce());
holder.textViewTr.setText(k.getTurkce());
holder.buttonSil.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
vt=新的Veritabani(上下文);
//奥格雷尼伦·克莱梅勒尔·尤兹登·塔姆拉马拉·亚帕尔·亚帕尔·亚帕尔(yuzden tanımlamalar yapılmalı
字符串ingilizce=k.getIngilizce();
字符串turkce=k.getTurkce();
new VeritabaniDao().bildigimKelimelereEkle(vt,ingilizce,turkce);//用于添加另一个数据库
//埃克勒米·亚普·亚普·亚普·亚普·亚普·亚普·亚普·亚普·亚普·亚普·亚普·亚普·亚普·亚普·亚普·亚普·亚普·亚普(数据补充)
String id=String.valueOf(k.getId());
//删除数据
新VeritabaniDao().sil(vt,id);
}
});
}
@凌驾
public int getItemCount(){
返回kelimelerArrayList.size();
}
公共类KelimeViewHolder扩展了RecyclerView.ViewHolder{
私有文本视图文本视图eng、文本视图tr;
私人按钮;
public KelimeViewHolder(@NonNull View itemView){
超级(项目视图);
textViewEng=itemView.findViewById(R.id.textViewEng);
textViewTr=itemView.findViewById(R.id.textViewTr);
buttonSil=itemView.findViewById(R.id.buttonSil);
}
}
}

如何执行此操作

您可以使用diffUtil类。在适配器类中添加diffUtil调用将在您从列表中删除某项时处理动画,并在您删除某项时自动更新视图。以下是如何在适配器中使用diffUtils类的示例:

class RunAdapter: RecyclerView.Adapter<RunAdapter.RunViewHolder>()  {

    inner class RunViewHolder(itemView: View):RecyclerView.ViewHolder(itemView)

    private val diffCallBack = object : DiffUtil.ItemCallback<Run>(){
        override fun areItemsTheSame(oldItem: Run, newItem: Run): Boolean {
            return oldItem.primaryKey == newItem.primaryKey
        }

        override fun areContentsTheSame(oldItem: Run, newItem: Run): Boolean {
            return oldItem.hashCode()==newItem.hashCode()
        }

    }

    private val differ = AsyncListDiffer(this,diffCallBack)

//use this function for submitting your list to adapter class
    fun submitList(listRun:List<Run>) = differ.submitList(listRun)

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RunViewHolder {
        return RunViewHolder(LayoutInflater.from(parent.context).inflate(
            R.layout.item_run,
            parent,
            false
        ))
    }

    override fun getItemCount(): Int {
       return differ.currentList.size
    }

    override fun onBindViewHolder(holder: RunViewHolder, position: Int) {

        val run = differ.currentList[position]
        holder.itemView.apply {

        //set your view's here.
        }

    }
}
class RunAdapter:RecyclerView.Adapter(){
内部类RunViewHolder(itemView:View):RecyclerView.ViewHolder(itemView)
private val diffCallBack=对象:DiffUtil.ItemCallback(){
覆盖乐趣项相同(旧项:运行,新项:运行):布尔值{
返回oldItem.primaryKey==newItem.primaryKey
}
覆盖内容相同(旧项:运行,新项:运行):布尔值{
返回oldItem.hashCode()==newItem.hashCode()
}
}
private val difference=AsyncListDifference(此为diffCallBack)
//使用此函数将列表提交到适配器类
有趣的提交列表(listRun:List)=不同。提交列表(listRun)
重写CreateViewHolder(父级:ViewGroup,viewType:Int):RunViewHolder{
返回RunViewHolder(LayoutFlater.from(parent.context)。充气(
R.layout.item_运行,
父母亲
假的
))
}
重写getItemCount():Int{
return.currentList.size
}
覆盖BindViewHolder(holder:RunViewHolder,位置:Int){
val run=不同。当前列表[位置]
holder.itemView.apply{
//在这里设置您的视图。
}
}
}
下面是一个java示例,请根据需要进行修改:

public class RecyclerViewAdaptar extends ListAdapter<EntityTableNotes, RecyclerViewHolder> {

    private RecyclerItemTouchListner mListner;

    public RecyclerViewAdaptar() {
        super(diffCallBack);
    }

    private static final DiffUtil.ItemCallback<EntityTableNotes> diffCallBack = new DiffUtil.ItemCallback<EntityTableNotes>() {
        @Override
        public boolean areItemsTheSame(@NonNull EntityTableNotes oldItem, @NonNull EntityTableNotes newItem) {
            return oldItem.getNoteId() == newItem.getNoteId();
        }

        @Override
        public boolean areContentsTheSame(@NonNull EntityTableNotes oldItem, @NonNull EntityTableNotes newItem) {
            return oldItem.getNoteTitle().equals(newItem.getNoteTitle()) &&
                    oldItem.getNoteBody().equals(newItem.getNoteBody()) &&
                    oldItem.getNotePriority() == newItem.getNotePriority();
        }
    };


    @NonNull
    @Override
    public RecyclerViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

            return new RecyclerViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.singleitemgrid, parent, false));
        }
    }

    @Override
    public void onBindViewHolder(@NonNull final RecyclerViewHolder holder, final int position) {

        holder.noteTitle.setText(getItem(position).getNoteTitle());

    }
公共类RecycleWebAdaptar扩展ListAdapter{
私人回收商emtouchlistner mListner;
公共回收服务数据库(){
超级(diffCallBack);
}
私有静态final DiffUtil.ItemCallback diffCallBack=new DiffUtil.ItemCallback(){
@凌驾
公共布尔值是相同的(@NonNull EntityTableNotes oldItem,@NonNull EntityTableNotes newItem){
返回oldItem.getNoteId()==newItem.getNoteId();
}
@凌驾
公共布尔值是相同的内容(@NonNull EntityTableNotes oldItem,@NonNull EntityTableNotes newItem){
返回oldItem.getNoteTitle().equals(newItem.getNoteTitle())&&
oldItem.getNoteBody()等于(newItem.getNoteBody())&&
oldItem.getNotePriority()==newItem.getNotePriority();
}
};
@非空
@凌驾
public RecycleServiceWholder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
返回新的RecycleServiceWholder(LayoutInflater.from(parent.getContext()).flate(R.layout.singleitemgrid,parent,false));
}
}
@凌驾
BindViewHolder上的公共void(@NonNull final recycleriveWholder holder,final int position){
holder.noteTitle.setText(getItem(position.getNoteTitle());
}
在活动/片段中使用适配器
package com.tcoding.kelimeezberletici.Adapter;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.tcoding.kelimeezberletici.R;
import com.tcoding.kelimeezberletici.Sınıflar.Kelimeler;
import com.tcoding.kelimeezberletici.Veritabani.Veritabani;
import com.tcoding.kelimeezberletici.Veritabani.VeritabaniDao;

import org.w3c.dom.Text;

import java.util.ArrayList;

public class KelimeleriGosterAdapter extends RecyclerView.Adapter<KelimeleriGosterAdapter.KelimeViewHolder> {

    private Context context;
    private ArrayList<Kelimeler> kelimelerArrayList;
    private Veritabani vt ;

    public KelimeleriGosterAdapter(Context context, ArrayList<Kelimeler> kelimelerArrayList) {
        this.context = context;
        this.kelimelerArrayList = kelimelerArrayList;
    }

    @NonNull
    @Override
    public KelimeViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardviewdeneme,parent,false);
        return new KelimeViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull KelimeViewHolder holder, int position) {

       final Kelimeler k = kelimelerArrayList.get(position);
        holder.textViewEng.setText(k.getIngilizce());
        holder.textViewTr.setText(k.getTurkce());
        holder.buttonSil.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                vt = new Veritabani(context);
                //Sil dedigimizde ogrenilen kelimelere eklenecek o yuzden tanımlamalar yapılmalı
                String ingilizce = k.getIngilizce();
                String turkce = k.getTurkce();
                new VeritabaniDao().bildigimKelimelereEkle(vt,ingilizce,turkce);//For the add another database
                // Ekleme yapıldı idsi alınarak silme işlemi yapılmalı(Data Add)
                String id = String.valueOf(k.getId());

                //to delete data
                new VeritabaniDao().sil(vt,id);

            }
        });

    }





    @Override
    public int getItemCount() {
        return kelimelerArrayList.size();
    }

    public class KelimeViewHolder extends RecyclerView.ViewHolder {
        private TextView textViewEng,textViewTr;
        private Button buttonSil;


        public KelimeViewHolder(@NonNull View itemView) {
            super(itemView);
            textViewEng = itemView.findViewById(R.id.textViewEng);
            textViewTr = itemView.findViewById(R.id.textViewTr);
            buttonSil = itemView.findViewById(R.id.buttonSil);
        }
    }
}

class RunAdapter: RecyclerView.Adapter<RunAdapter.RunViewHolder>()  {

    inner class RunViewHolder(itemView: View):RecyclerView.ViewHolder(itemView)

    private val diffCallBack = object : DiffUtil.ItemCallback<Run>(){
        override fun areItemsTheSame(oldItem: Run, newItem: Run): Boolean {
            return oldItem.primaryKey == newItem.primaryKey
        }

        override fun areContentsTheSame(oldItem: Run, newItem: Run): Boolean {
            return oldItem.hashCode()==newItem.hashCode()
        }

    }

    private val differ = AsyncListDiffer(this,diffCallBack)

//use this function for submitting your list to adapter class
    fun submitList(listRun:List<Run>) = differ.submitList(listRun)

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RunViewHolder {
        return RunViewHolder(LayoutInflater.from(parent.context).inflate(
            R.layout.item_run,
            parent,
            false
        ))
    }

    override fun getItemCount(): Int {
       return differ.currentList.size
    }

    override fun onBindViewHolder(holder: RunViewHolder, position: Int) {

        val run = differ.currentList[position]
        holder.itemView.apply {

        //set your view's here.
        }

    }
}
public class RecyclerViewAdaptar extends ListAdapter<EntityTableNotes, RecyclerViewHolder> {

    private RecyclerItemTouchListner mListner;

    public RecyclerViewAdaptar() {
        super(diffCallBack);
    }

    private static final DiffUtil.ItemCallback<EntityTableNotes> diffCallBack = new DiffUtil.ItemCallback<EntityTableNotes>() {
        @Override
        public boolean areItemsTheSame(@NonNull EntityTableNotes oldItem, @NonNull EntityTableNotes newItem) {
            return oldItem.getNoteId() == newItem.getNoteId();
        }

        @Override
        public boolean areContentsTheSame(@NonNull EntityTableNotes oldItem, @NonNull EntityTableNotes newItem) {
            return oldItem.getNoteTitle().equals(newItem.getNoteTitle()) &&
                    oldItem.getNoteBody().equals(newItem.getNoteBody()) &&
                    oldItem.getNotePriority() == newItem.getNotePriority();
        }
    };


    @NonNull
    @Override
    public RecyclerViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

            return new RecyclerViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.singleitemgrid, parent, false));
        }
    }

    @Override
    public void onBindViewHolder(@NonNull final RecyclerViewHolder holder, final int position) {

        holder.noteTitle.setText(getItem(position).getNoteTitle());

    }