我正在嘗試顯示未完成的作業的 Recyclerview 串列 (!isJob_finished()),但每個專案似乎都顯示在 recyclerview 卡串列中。我如何使它在作業未完成時不顯示在 recyclerview 串列中?
我的配接器配接器
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder>{
//Make a context and iterable datalist variable
Context context;
ArrayList<JobModel> userArrayList;
//Constructor
public MyAdapter(Context context, ArrayList<JobModel> userArrayList) {
this.context = context;
this.userArrayList = userArrayList;
}
@NonNull
@Override
public MyAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
//Here is where you attach your item layout ie: job_openings_list
View v = LayoutInflater.from(context).inflate(R.layout.job_openings_list,parent,false);
return new MyViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull MyAdapter.MyViewHolder holder, int position) {
//Instantiate your model class to hold the data of the model ur simulating
JobModel job = userArrayList.get(position);
//Based on the widgets u used on myViewHolder
if(job.isJob_finished()==false){
holder.tv_provided_title.setText(job.getJob_title());
holder.tv_provided_payout.setText(job.getJob_payout());
holder.tv_provided_id.setText(job.getJob_ID());
//OnClickers redirect to intent
holder.tv_provided_title.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { ToDescription(v, job); }
});
holder.tv_provided_payout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { ToDescription(v, job); }
});
holder.tv_provided_id.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { ToDescription(v, job); }
});
}else{
}
}
private void ToDescription(View v, JobModel job) {
Intent i = new Intent(v.getContext(), JobDescription.class);
i.putExtra("job_id",job.getJob_ID());
context.startActivity(i);
}
@Override
public int getItemCount() {
return userArrayList.size();
}
public static class MyViewHolder extends RecyclerView.ViewHolder{
//Here in scope instantiate the widgets used based on your item layout
TextView tv_provided_title,tv_provided_payout, tv_provided_id;
public MyViewHolder(@NonNull @NotNull View itemView) {
super(itemView);
//find the widgets
tv_provided_title = itemView.findViewById(R.id.tv_provided_title);
tv_provided_payout = itemView.findViewById(R.id.tv_provided_payout);
tv_provided_id = itemView.findViewById(R.id.tv_provided_id);
}
}
}
我與配接器一起使用的我的模型模型
public class JobModel {
private String Job_title;
private String Job_ID;
private String Job_payout;
private Boolean Job_finished = false;
private JobModel(){
}
public JobModel(String job_title, String job_ID, String job_payout) {
Job_title = job_title;
Job_ID = job_ID;
Job_payout = job_payout;
}
public Boolean isJob_finished() { return Job_finished; }
public void setFinished(Boolean finished) { this.Job_finished = finished; }
public String getJob_title() {
return Job_title;
}
public void setJob_title(String job_title) {
Job_title = job_title;
}
public String getJob_ID() {
return Job_ID;
}
public void setJob_ID(String job_ID) {
Job_ID = job_ID;
}
public String getJob_payout() {
return Job_payout;
}
public void setJob_payout(String job_payout) {
Job_payout = job_payout;
}
}
我使用的代碼是 JAVA
uj5u.com熱心網友回復:
RecyclerViewis a View, 用于顯示傳遞的資料(在這種情況下:使用配接器)。您應該將已經過濾的串列傳遞給配接器,而不是包含所有作業的整個陣列。那是最簡單的方法
另一種更靈活的方法是在配接器中實作Filterable并使用過濾,如果在開始時應該只有未完成的作業,那么只需在配接器建構式的開頭設定過濾器。您還可以引入一些開關/切換 GUI 元素來隱藏/顯示已完成的作業(例如在ActionBar/ 上Toolbar)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/372850.html
標籤:爪哇 安卓 安卓工作室 android-recyclerview 安卓适配器
