首页 > 解决方案 > 自定义Adapter:在getView方法中,当convertView作为View变量接收时,人为什么要重新赋值给另一个View对象

问题描述

所以基本上,我正在关注谷歌关于 android 的免费 Udacity 课程。

当他们到达那里时

    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {

  View listItemView = convertView;  <------------- they assign convertView to a new view object, I want to know why, is it done like that. 

请如果您能回答以下问题,我很抱歉,但我想知道它们背后的逻辑。1)自定义适配器构造函数中的public WordAdapter(Context context, int resource, ArrayList words),这个变量是在初始化ArrayAdapter时传入的吗?

2) 和 ArrayAdapter 中的 super,有时我看到人们使用这个:super(context, resource, words); 有时: super(context, 0, words);

为什么这样?我认为资源在这里并不重要,因为当您设置适配器时,资源变得显而易见。

我感到很困惑。请和谢谢你,我想让我的基础知识更强大。

public class WordAdapter extends ArrayAdapter<Word> {


    int mResouce;
    Context mContext;

  public WordAdapter(@NonNull Context context, int resource, @NonNull List<Word> words) {


            super(context, resource, words);
       mResouce  =resource;
            this.mContext = context;
    }

    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
            View listItemView = convertView;
            if (listItemView == null ){
                    listItemView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent, false);
            }
            Word word = getItem(position);

            TextView view1 = (TextView) listItemView.findViewById(R.id.default_text_view);
            TextView view2 = (TextView) listItemView.findViewById(R.id.miwok_text_view);
            view1.setText(word.getDefaultTranslation());
            view2.setText(word.getMiwokTranslaton());


            return listItemView;
    }
}

标签: javaandroid

解决方案


推荐阅读