java - 自定义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;
}
}
解决方案
推荐阅读
- microsoft-ajax-minifier - 从哪里获得 ajaxmin.exe?
- android - 在 Fragment 外部的类中调用 getViewById 会生成空指针异常和内容
- android - RecyclerView - 在用户开始滚动之前,有什么方法可以在屏幕上显示多少项目?
- neural-network - 我得到这个 keras 神经网络的 0% 准确率
- android - 无法使用 HttpURLConnection 和 OkHttp 跟踪上传进度
- uml - UML 状态机图:从复合状态触发退出
- php - 使用 php 群发邮件脚本发送附件
- scala - 将 Seq[Seq[String,String]] 转换为 Map[String,Seq[String]]
- sql - Impala SQL中的分区引发错误
- django - Django rest auth 将用户注册为管理员