RecycleView适配器和主代码由于未知错误而无法正常工作,您可以发现差异吗

问题描述 投票:0回答:1

大家好,我是使用android studio的新手,我正在做我的学校项目。我需要使用尝试做的RecycleVie魔杖,但没有成功。我使用经过分类的任务,其中有3种属性可以在布局上显示,但我不知道我的错误在哪里,如果有人可以帮助我,我将非常高兴!

我的对象类:

public class Task {
private String material;
private String day;
private String month;

public Task (String material,String day,String month)
{
    this.material = material;
    this.day = day;
    this.month = month;
}

public String getMaterial() {
    return material;
}

public void setMaterial(String material) {
    this.material = material;
}

public String getDay() {
    return day;
}

public void setDay(String day) {
    this.day = day;
}

public String getMonth() {
    return month;
}

public void setMonth(String month) {
    this.month = month;
}

}

适配器代码:

public class HomeRecyclerViewAdapter extends RecyclerView.Adapter<HomeRecyclerViewAdapter.ViewHolder> {

private Context mCtx;
private List<Task> tList;

// data is passed into the constructor
public HomeRecyclerViewAdapter(Context mCtx, List<Task> tList) {
    this.mCtx = mCtx;
    this.tList = tList;
}

// stores and recycles views as they are scrolled off screen
public class ViewHolder extends RecyclerView.ViewHolder {
    TextView tvText, tvDateDay, tvDateMonth;
        public ViewHolder(View itemView) {
            super(itemView);
            tvText = itemView.findViewById(R.id.tvText);
            tvDateDay = itemView.findViewById(R.id.tvDateDay);
            tvDateMonth = itemView.findViewById(R.id.tvDateMonth);
        }
}


// inflates the row layout from xml when needed
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    //inflating and returning our view holder
    LayoutInflater inflater = LayoutInflater.from(mCtx);
    View view = inflater.inflate(R.layout.home_recyclerview_row, null);
    return new ViewHolder(view);
}

// binds the data to the TextView in each row
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    Task task = tList.get(position);
    holder.tvText.setText(task.getMaterial());
}

// allows clicks events to be caught
@Override
public int getItemCount() {
    return tList.size();
}

}

和主要代码:

public class HomeScreen_activity extends AppCompatActivity implements View.OnClickListener {

List<Task> tList;
RecyclerView homercy;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.home_screen_layout);

    homercy = (RecyclerView) findViewById(R.id.homercy);
    homercy.setHasFixedSize(true);
    homercy.setLayoutManager(new LinearLayoutManager(this));

    // set up the RecyclerView
    RecyclerView recyclerView = findViewById(R.id.homercy);
    tList = new ArrayList<Task>();
    Task t1 = new Task("test","12","05");
    tList.add(t1);
    HomeRecyclerViewAdapter adapter = new HomeRecyclerViewAdapter(this,tList);
    recyclerView.setAdapter(adapter);

}
android-studio android-recyclerview recycler-adapter
1个回答
0
投票

也许在onCreateViewHolder()中,您必须这样做:

// inflates the row layout from xml when needed
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.home_recyclerview_row, parent, false);

return new ViewHolder(view);

}
© www.soinside.com 2019 - 2024. All rights reserved.