Adapter с двумя макетами элементов
Я хочу, чтобы мой адаптер в зависимости от наличия .getCommnet() выводил элементы с разными layout. Но мой адаптер выводит все элементы c одним и тем же layout (example_of_item1).
Код адаптера:
public class TaskAdapter extends RecyclerView.Adapter<TaskAdapter.TaskViewHolder> {
private ArrayList<Items> elements;
private Context context;
private int position;
private int index;
public TaskAdapter (ArrayList<Items> elements){
this.elements = elements;
}
@NonNull
@Override
public TaskViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
context = parent.getContext();
int LayoutIdForListItem;
if (elements.get(position).getComment() != null) {
LayoutIdForListItem = R.layout.example_of_item1;
index = 1;
}
else {
LayoutIdForListItem = R.layout.example_of_item2;
index = 2;
}
LayoutInflater layoutInflater = LayoutInflater.from(context);
View view = layoutInflater.inflate(LayoutIdForListItem, parent, false);
TaskViewHolder viewHolder = new TaskViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull TaskViewHolder holder, int position) {
this.position = position;
holder.bind(position);
}
@Override
public int getItemCount() {
return elements.size();
}
class TaskViewHolder extends RecyclerView.ViewHolder {
TextView task;
Button button;
public TaskViewHolder(@NonNull View itemView) {
super(itemView);
if (index == 1) {
task = itemView.findViewById(R.id.task);
button = itemView.findViewById(R.id.button);
}
else {
task = itemView.findViewById(R.id.task);
}
}
void bind(final int position) {
if (index == 1) {
task.setText(elements.get(position).getTask());
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog dialog = new AlertDialog.Builder(context).setMessage(elements.get(position).getComment())
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).create();
dialog.show();
}
});
}
else {
task.setText(elements.get(position).getTask());
}
}
}
}
Код класса Item:
public class Items implements Serializable {
private String Task;
private String Comment;
private String FirstDate;
private String SecondDate;
private ArrayList<String> Subtasks;
public Items (String task, String comment, String firstDate, String secondDate, ArrayList<String> subtask){
this.Task = task;
this.Comment = comment;
this.FirstDate = firstDate;
this.SecondDate = secondDate;
this.Subtasks = subtask;
}
public String getTask() {
return Task;
}
public void setTask(String task) {
Task = task;
}
public String getComment() {
return Comment;
}
public void setComment(String comment) {
Comment = comment;
}