Android 我是否需要将onBindViewHolder()中的项目共享给ViewHolder?
我是android Development的大三学生,正在寻找Viewholder/onBindViewHolder的最佳实现 以下是android studio在构建片段时给我们的信息(列表):Android 我是否需要将onBindViewHolder()中的项目共享给ViewHolder?,android,android-fragments,android-recyclerview,android-listview,android-viewholder,Android,Android Fragments,Android Recyclerview,Android Listview,Android Viewholder,我是android Development的大三学生,正在寻找Viewholder/onBindViewHolder的最佳实现 以下是android studio在构建片段时给我们的信息(列表): 公共类MyItemRecycleServiceAdapter扩展了RecyclerView.Adapter{ //一些代码 @凌驾 公共无效onBindViewHolder(最终ViewHolder,内部位置){ holder.mItem=mValues.get(位置); holder.mIdView
公共类MyItemRecycleServiceAdapter扩展了RecyclerView.Adapter{
//一些代码
@凌驾
公共无效onBindViewHolder(最终ViewHolder,内部位置){
holder.mItem=mValues.get(位置);
holder.mIdView.setText(mValues.get(position.id));
holder.mContentView.setText(mValues.get(position.content));
}
公共类ViewHolder扩展了RecyclerView.ViewHolder{
公共最终视图mView;
公共最终文本视图中视图;
公共最终文本视图mContentView;
公害;
公共视图持有者(视图){
超级(视图);
mView=视图;
mIdView=(TextView)view.findViewById(R.id.item_编号);
mContentView=(TextView)view.findViewById(R.id.content);
}
//一些代码
}
}
为什么将项目发送到ViewHolder?为什么他没有在onBindViewHolder中用于更新文本视图?
像这样:
public class MyItemRecyclerViewAdapter extends RecyclerView.Adapter<MyItemRecyclerViewAdapter.ViewHolder> {
//some code
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
holder.mItem = mValues.get(position);
holder.mIdView.setText(holder.mItem.id);
holder.mContentView.setText(holder.mItem.content);
}
public class ViewHolder extends RecyclerView.ViewHolder {
public final View mView;
public final TextView mIdView;
public final TextView mContentView;
public DummyItem mItem;
public ViewHolder(View view) {
super(view);
mView = view;
mIdView = (TextView) view.findViewById(R.id.item_number);
mContentView = (TextView) view.findViewById(R.id.content);
}
//some code
}
}
公共类MyItemRecycleServiceAdapter扩展了RecyclerView.Adapter{
//一些代码
@凌驾
公共无效onBindViewHolder(最终ViewHolder,内部位置){
holder.mItem=mValues.get(位置);
holder.mIdView.setText(holder.mItem.id);
holder.mContentView.setText(holder.mItem.content);
}
公共类ViewHolder扩展了RecyclerView.ViewHolder{
公共最终视图mView;
公共最终文本视图中视图;
公共最终文本视图mContentView;
公害;
公共视图持有者(视图){
超级(视图);
mView=视图;
mIdView=(TextView)view.findViewById(R.id.item_编号);
mContentView=(TextView)view.findViewById(R.id.content);
}
//一些代码
}
}
最后,我现在正在做什么。
不将项目发送到ViewHolder:
public class MyItemRecyclerViewAdapter extends RecyclerView.Adapter<MyItemRecyclerViewAdapter.ViewHolder> {
//some code
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
DummyItem mItem = mValues.get(position);
holder.mIdView.setText(mItem.id);
holder.mContentView.setText(mItem.content);
}
public class ViewHolder extends RecyclerView.ViewHolder {
public final View mView;
public final TextView mIdView;
public final TextView mContentView;
public ViewHolder(View view) {
super(view);
mView = view;
mIdView = (TextView) view.findViewById(R.id.item_number);
mContentView = (TextView) view.findViewById(R.id.content);
}
//some code
}
}
公共类MyItemRecycleServiceAdapter扩展了RecyclerView.Adapter{
//一些代码
@凌驾
公共无效onBindViewHolder(最终ViewHolder,内部位置){
DummyItem=mValues.get(位置);
holder.mIdView.setText(斜接id);
holder.mContentView.setText(mItem.content);
}
公共类ViewHolder扩展了RecyclerView.ViewHolder{
公共最终视图mView;
公共最终文本视图中视图;
公共最终文本视图mContentView;
公共视图持有者(视图){
超级(视图);
mView=视图;
mIdView=(TextView)view.findViewById(R.id.item_编号);
mContentView=(TextView)view.findViewById(R.id.content);
}
//一些代码
}
}
最好的方法是什么?我不知道你到底在说什么,但据我所知,你的视图持有者可以包含所有的UI、方法和逻辑,但是我更喜欢第三种方法,因为它比其他方法更清晰
话虽如此,请看AdaMc331解释了这些方法是如何工作的,您应该如何使用它们。谢谢您的帮助!完全符合我的期望。
public class MyItemRecyclerViewAdapter extends RecyclerView.Adapter<MyItemRecyclerViewAdapter.ViewHolder> {
//some code
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
DummyItem mItem = mValues.get(position);
holder.mIdView.setText(mItem.id);
holder.mContentView.setText(mItem.content);
}
public class ViewHolder extends RecyclerView.ViewHolder {
public final View mView;
public final TextView mIdView;
public final TextView mContentView;
public ViewHolder(View view) {
super(view);
mView = view;
mIdView = (TextView) view.findViewById(R.id.item_number);
mContentView = (TextView) view.findViewById(R.id.content);
}
//some code
}
}