- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
尝试为 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/
我正在开发我的应用程序,它要求电影海报的比例为 1:2。我找到了一种方法来做到这一点就是运行 movieAdapterViewHolder.posterview.requestLayo
我在 CardAdapter 中使用 onBindViewHolder。它包括 checkedTextView 的 onClick 方法。我试图获取这些文本并将其放入 Arraylist(shared
在适配器 submitList 到 DiffUtil 之后,调用 onBindViewHolder 并且出于某种原因它总是将列表滚动到顶部。 我尝试了 SO 中关于在 recyclerview 更新列
我收到错误:“FlickrRecyclerViewAdapter”类必须声明为抽象类或在“适配器”中实现方法抽象方法 onBindViewHolder(VH, int) 虽然这个错误应该是 self
我有一个 recyclerview 显示我的数据。在我的适配器类中,在 onBindViewHolder() 中,我为一个按钮创建了一个监听器,该按钮在单击时删除了一行。第一次工作得很好,但如果我尝试
如果图像不存在,我将尝试下载它们;如果已经下载,我将尝试保留并重新使用它们。 下载和展示作品时,不会重复使用它们。似乎 mValues 在不同的调用中不是相同的 mValues。 这是我的代码 pub
我已经将第三方库用于进度条,一切正常,但在 onBindViewHolder 方法中,当我编写 holder.donutprogress.setFinishedStrokeColor(colorsda
ViewPager 发布 1.0.0 版本 对于普通的 RecyclerView,holder.itemView给我当前绑定(bind)/渲染的 View 。 但是,FragmentStateAdap
我想在下一类 ChildViewHolder 的 onBindViewHolder 中访问 DayOfWeek,这样我就可以在 if 语句中使用它,如 ChildRecyclerAdapter 中所示
我在recycview中有很多按钮我只是想将它们添加到数组中,然后让它们添加一些工作。 首先我定义了数组名称“buttons”ToggleButton 按钮[] = new ToggleButton[
当我调用notifyDataSetChanged()时,它不会调用我的onBindViewHolder,我不知道它为什么这样做,我当前正在使用自定义布局,不知道这是否与它有关。 有人有什么想法吗?这是
我有一个TestActivity: public class TestActivity extends AppCompatActivity { @Override protected
我想填写诸如用户名、全名之类的内容,显示 follow_btn 的可见性。最大的问题是我不能在 onbindviewholder 中使用。它用红色下划线标出。你能帮我吗? 错误是:error: can
我正在尝试使用 RecyclerView 显示一个左侧有图像、右侧有标题的列表。 通过 for 循环,我在 ArrayList 中添加了标题和图像 String[] mtitles = {"Title
您好,当 recyclerview 第一次创建 OnbindViewHolder 时,我遇到了一个奇怪的问题,直到 recyclerview 中的最后一个项目被调用,然后当我滚动时OnbindView
onBindViewHolder 在数据绑定(bind)到 View 后的第一个位置和最后一个位置意外调用。这造成了问题,因为当我尝试向列表中添加项目时,最后一项的 ImageViews(相似和不同)
设置 我有一个带有自定义适配器和自定义 ViewHolder 的 RecyclerView。 我理解 onCreateViewHolder() 方法在 RecyclerView 用完 ViewHold
我知道这个问题已被多次询问与 ListViews 有关,但我一直无法真正理解解决方案。我知道 RecyclerViewAdapter 中 onBindViewHolder() 的位置参数类似于 lis
我已经将 RececlerView 与 ViewHolder 模式结合使用了一段时间。我正在实现自定义 Adapter。 我不是在我的代码中搜索特定的错误帮助。 我只是想知道,如果它是正常的,onBi
当我在我的 RecyclerView 上调用 notifyItemChanged() 时,相应的 Views(在本例中为按钮)没有按预期更新.我调用他们的原因是数据已经改变,这会导致他们的背景颜色改变
我是一名优秀的程序员,十分优秀!