Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何填写回收视图_Java_Android_Android Studio_Android Room - Fatal编程技术网

Java 如何填写回收视图

Java 如何填写回收视图,java,android,android-studio,android-room,Java,Android,Android Studio,Android Room,如何使用SearchView筛选回收者视图 我尝试了所有的视频教程,但都从列表中获得了他们的物品回收视图 但是我从db那里得到了我的物品,不知道该怎么做 这是我的适配器代码 public class AthleteAdapter extends RecyclerView.Adapter<AthleteAdapter.AthleteHolder> { private List<Athlete> athletes = new ArrayList<>();

如何使用SearchView筛选回收者视图 我尝试了所有的视频教程,但都从列表中获得了他们的物品回收视图 但是我从db那里得到了我的物品,不知道该怎么做

这是我的适配器代码

public  class AthleteAdapter extends RecyclerView.Adapter<AthleteAdapter.AthleteHolder> {
    private List<Athlete> athletes = new ArrayList<>();

private OnItemClickListener listener;

@NonNull
@Override

public AthleteHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View itemview = LayoutInflater.from(parent.getContext()).inflate(R.layout.athlete_item, parent, false);
    return new AthleteHolder(itemview);
}

@Override
public void onBindViewHolder(@NonNull AthleteHolder holder, int position) {
    Athlete currnetAthlete = athletes.get(position);
    holder.textViewName.setText(currnetAthlete.getAthlete_name());
    holder.textViewLastname.setText(currnetAthlete.getAthlete_lastname());
    holder.textView_phonenumber.setText(currnetAthlete.getAthlete_phonenumber());
    holder.textViewTime1.setText(String.valueOf(currnetAthlete.getSign_in_time()));
    holder.textViewTime2.setText(String.valueOf(currnetAthlete.getCheck_tution_time()));


}

public void setAthletes(List<Athlete> athletes) {
    this.athletes = athletes;
    notifyDataSetChanged();
}

public Athlete getposition(int position) {
    return athletes.get(position);
}

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

public void setOnItemClickListener(OnItemClickListener listener) {
    this.listener = listener;
}

public interface OnItemClickListener {
    void onItemClick(Athlete athlete);
}

class AthleteHolder extends RecyclerView.ViewHolder {
    private TextView textViewName, textViewLastname, textView_phonenumber, textViewTime1, textViewTime2;

    public AthleteHolder(@NonNull View itemView) {
        super(itemView);
        textViewName = itemView.findViewById(R.id.name_main);
        textViewLastname = itemView.findViewById(R.id.lastname_main);
        textView_phonenumber = itemView.findViewById(R.id.textView_number);
        textViewTime1 = itemView.findViewById(R.id.time1);
        textViewTime2 = itemView.findViewById(R.id.time2);

        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int position = getAdapterPosition();
                if (listener != null && position != RecyclerView.NO_POSITION) {
                    listener.onItemClick(athletes.get(position));
                }
            }
        });
    }

}
公共类AthleteAdapter扩展了RecyclerView.Adapter{ 私有列表=新的ArrayList(); 私人监听; @非空 @凌驾 公共AthleteHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){ View itemview=LayoutFlater.from(parent.getContext()).flate(R.layout.atternate\u item,parent,false); 返回新的AthleteHolder(itemview); } @凌驾 public void onBindViewHolder(@NonNull AthleteHolder,int位置){ 运动员currnetAthlete=运动员。获取(位置); holder.textViewName.setText(currentathlete.getAthleter_name()); holder.textViewLastname.setText(currentathlete.getAthletite_lastname()); holder.textView_phonenumber.setText(currentathlete.getathleter_phonenumber()); holder.textViewTime1.setText(String.valueOf(currentathlete.getSign_in_time()); holder.textViewTime2.setText(String.valueOf(currentathlete.getCheck_tution_time()); } 公众运动员(运动员名单){ 这个。运动员=运动员; notifyDataSetChanged(); } 公共位置(国际位置){ 返回运动员。获得(位置); } @凌驾 public int getItemCount(){ 返回运动员。大小(); } 公共void setOnItemClickListener(OnItemClickListener侦听器){ this.listener=listener; } 公共接口侦听器{ 麦克利克(运动员); } 类AthleteHolder扩展了RecyclerView.ViewHolder{ 私有TextView textViewName、textViewLastname、TextView_电话号码、textViewTime1、textViewTime2; 公共AthleteHolder(@NonNull View itemView){ 超级(项目视图); textViewName=itemView.findViewById(R.id.name\u main); textViewLastname=itemView.findViewById(R.id.lastname\u main); textView\u phonenumber=itemView.findViewById(R.id.textView\u编号); textViewTime1=itemView.findViewById(R.id.time1); textViewTime2=itemView.findViewById(R.id.time2); itemView.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ int position=getAdapterPosition(); if(侦听器!=null&&position!=RecyclerView.NO\u位置){ listener.onItemClick(运动员.get(位置)); } } }); } }
}

步骤1:从数据库获取所有数据,并将该列表提供给适配器

    usersList = db.getAll();
    adapter = new dataAdapter(getApplicationContext(), usersList);
    adapter.setdatainterfacemethod(this);
步骤2:从Searchview获取文本

    sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {

            filter(s.toString());
            }
            return false;
        }
    });
步骤3:比较searchview文本和列表文本(如果退出),然后将列表提供给适配器

public void filter(String text) {
    List<Users> name = new ArrayList<>();

    for (Users u : usersList) {
        if (u.getNAME().toLowerCase().contains(text.toLowerCase())) {
            name.add(u);
        }
    }

    adapter.filterlist(name);
}
公共无效过滤器(字符串文本){
列表名称=新的ArrayList();
用于(用户u:usersList){
如果(u.getNAME().toLowerCase().contains(text.toLowerCase())){
名称。添加(u);
}
}
adapter.filterlist(名称);
}
步骤4:-更改列表并通知适配器(在适配器类中)

public void filterlist(列表名){
this.usersList=名称;
notifyDataSetChanged();
}
--------------适配器类--------------------

public class dataAdapter extends RecyclerView.Adapter<dataAdapter.viewholder> {

public List<Users> usersList;
Context context;
dataInterface dataInterface;

public dataAdapter(Context context, List<Users> usersList) {
    this.usersList = usersList;
    this.context = context;
}

public void setdatainterfacemethod(dataInterface dataInterface) {
    this.dataInterface = dataInterface;
}

@NonNull
@Override
public viewholder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.include_recycle_demo, viewGroup, false);
    return new viewholder(view);
}

@Override
public void onBindViewHolder(@NonNull final viewholder viewholder, final int i) {

}

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

public void filterlist(List<Users> name) {
    this.usersList = name;
    notifyDataSetChanged();
}

public class viewholder extends RecyclerView.ViewHolder {

    public viewholder(@NonNull View itemView) {
        super(itemView);
    }
}
公共类dataAdapter扩展了RecyclerView.Adapter{
公共列表用户列表;
语境;
数据接口数据接口;
公共数据适配器(上下文,列表用户列表){
this.usersList=usersList;
this.context=上下文;
}
公共无效setdatainterfacemethod(dataInterface dataInterface){
this.dataInterface=dataInterface;
}
@非空
@凌驾
public viewholder onCreateViewHolder(@NonNull ViewGroup ViewGroup,int i){
View View=LayoutInflater.from(viewGroup.getContext()).flate(R.layout.include\u recycle\u demo,viewGroup,false);
返回新的viewholder(视图);
}
@凌驾
public void onBindViewHolder(@NonNull final viewholder viewholder,final int i){
}
@凌驾
public int getItemCount(){
返回usersList.size();
}
公共无效筛选器列表(列表名称){
this.usersList=名称;
notifyDataSetChanged();
}
公共类viewholder扩展了RecyclerView.viewholder{
公共视图持有者(@NonNull View itemView){
超级(项目视图);
}
}

}

a有一个错误,我不知道如何修复它这是一个错误,试图对适配器类中获得的空对象referenceDid调用虚拟方法“void com.example.gym.AthleteAdapter.filterList(java.util.List)”?
public class dataAdapter extends RecyclerView.Adapter<dataAdapter.viewholder> {

public List<Users> usersList;
Context context;
dataInterface dataInterface;

public dataAdapter(Context context, List<Users> usersList) {
    this.usersList = usersList;
    this.context = context;
}

public void setdatainterfacemethod(dataInterface dataInterface) {
    this.dataInterface = dataInterface;
}

@NonNull
@Override
public viewholder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.include_recycle_demo, viewGroup, false);
    return new viewholder(view);
}

@Override
public void onBindViewHolder(@NonNull final viewholder viewholder, final int i) {

}

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

public void filterlist(List<Users> name) {
    this.usersList = name;
    notifyDataSetChanged();
}

public class viewholder extends RecyclerView.ViewHolder {

    public viewholder(@NonNull View itemView) {
        super(itemView);
    }
}