Android 我是否需要将onBindViewHolder()中的项目共享给ViewHolder?

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

我是android Development的大三学生,正在寻找Viewholder/onBindViewHolder的最佳实现

以下是android studio在构建片段时给我们的信息(列表):

公共类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
    }

}