gpt4 book ai didi

android - 如何在 ReccyclerView 的 onBindViewHolder 中设置文本?

转载 作者:太空宇宙 更新时间:2023-11-03 13:15:40 25 4
gpt4 key购买 nike

尝试为 RecyclerView 设置适配器。

Android Studio 中的这两行返回错误消息:“无法解析符号‘todo’和‘note1’”:

holder.todo.setText(dbList.get(position).getTodo());
holder.note1.setText(dbList.get(position).getNote1());

“todo”和“note1”是字符串,通过两个 EditText 收集用户输入的数据。

viewHolder 也显示错误:“局部变量 viewHolder 是多余的”。请指教。

完整列表Adaper.java

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.ArrayList;
import java.util.List;

public class ListAdapter extends RecyclerView.Adapter<ListAdapter.ListViewHolder> {

List<DataModel> dbList = new ArrayList<>();
Context context;
LayoutInflater mLayoutInflater;

public ListAdapter(Context context, List<DataModel> dbList) {
this.context = context;
this.dbList = dbList;
mLayoutInflater = LayoutInflater.from(context);
}

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

View convertView = mLayoutInflater.inflate(R.layout.singlecard_layout, parent, false);
ListViewHolder viewHolder = new ListViewHolder(convertView);
return viewHolder;
}

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {

holder.todo.setText(dbList.get(position).getTodo());
holder.note1.setText(dbList.get(position).getNote1());
}

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

public class ListViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

public ListenerEditText todo,note1;

public ListViewHolder(View itemView) {
super(itemView);

todo = (ListenerEditText) itemView.findViewById(R.id.CEditText);
note1 = (ListenerEditText) itemView.findViewById(R.id.DEditText);
itemView.setOnClickListener(this);
}

@Override
public void onClick(View v) {
}
}
}

完整的 DataModel.java

public class DataModel {

private String todo;
private String note1;

public String getTodo() {
return todo;
}

public void setTodo(String todo) {
this.todo = todo;
}

public String getNote1() {
return note1;
}

public void setNote1(String note1) {
this.note1 = note1;
}

最佳答案

您需要做的就是更改 onBindViewHolder() 的定义以采用您的 ListViewHolder 类型而不是通用的 RecyclerView.ViewHolder:

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

holder.todo.setText(dbList.get(position).getTodo());
holder.note1.setText(dbList.get(position).getNote1());
}

或者,您可以继续使用通用的 RecyclerView.ViewHolder 并将其转换为您的 ViewHolder 类型。这在一个适配器中使用不同类型的行时很常见:

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {

ListViewHolder listViewHolder = (ListViewHolder) holder;

listViewHolder.todo.setText(dbList.get(position).getTodo());
listViewHolder.note1.setText(dbList.get(position).getNote1());
}

至于“局部变量是多余的”警告,它只是希望您将其合并到一行而不是创建一个局部变量:

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

View convertView = mLayoutInflater.inflate(R.layout.abc_action_bar_title_item, parent, false);
return new ListViewHolder(convertView);
}

虽然请注意,这实际上是一个无用的警告,但我会保持代码原样并忽略警告。

关于android - 如何在 ReccyclerView 的 onBindViewHolder 中设置文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36561811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com