
设置ListView时一直格式不对,xml的布局文件肯定是没错的
后来找了一下午,终于找到错在哪里了!!
接下来,找不同环节
if (convertView == null) {
mViewHolder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(R.layout.item_app_info, null);
mViewHolder.r1_item = convertView.findViewById(R.id.rl_item);
mViewHolder.alpha = convertView.findViewById(R.id.item_app_alpha);
mViewHolder.item_app_icon = (ImageView) convertView.findViewById(R.id.item_app_icon);
mViewHolder.item_app_name = (TextView) convertView.findViewById(R.id.item_app_name);
mViewHolder.item_app_avatar = convertView.findViewById(R.id.item_app_avatar);
convertView.setTag(mViewHolder);
}else {
mViewHolder = (ViewHolder) convertView.getTag();
}
和
if(convertView == null){
mViewHolder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(R.layout.item_app_info, parent, false);
//findViewById
mViewHolder.re_item = convertView.findViewById(R.id.rl_item);
mViewHolder.alpha = convertView.findViewById(R.id.item_app_alpha);
mViewHolder.item_app_icon = (ImageView) convertView.findViewById(R.id.item_app_icon);
mViewHolder.item_app_name = (TextView) convertView.findViewById(R.id.item_app_name);
mViewHolder.item_app_avatar = convertView.findViewById(R.id.item_app_avatar);
convertView.setTag(mViewHolder);
}else {
mViewHolder = (ViewHolder) convertView.getTag();
}
上面两端代码都是适配器的getView函数里面的
LayoutInflater.inflate这个函数的参数都是什么意思呢?这个函数的作用是什么呢?
LayoutInflater的作用是将layout的xml布局文件实例化为View类对象,即,LayoutInflater的inflate函数就相当于将一个xml中定义的布局找出来,变成一个实例以供使用。
setContentView和inflate的区别
setContentView一旦调用,layout就会立刻显示UI;而inflate只会把layout形成一个以view类实现成的对象,有需要时再用setContentView显示出来。
一般在Activity中通过setContentView将界面显示出来,但是如果在非Activity中如何对控件布局设置操作,就需要LayoutInflater动态加载。
获取LayoutInflater的方法有如下三种:
LayoutInflater inflater = LayoutInflater.from(context);
View layout = inflater.inflate(R.layout.main, null);
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.main, null);
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.main, null);
LayoutInflater类inflate(int Resource, ViewGroup root, boolean attachToRoot)方法三个参数的含义

https://blog.youkuaiyun.com/Sacredness/article/details/88684527
当然,我的出错的改正是:设置inflate的第二个参数为null即可

在设置ListView时遇到格式问题,经过排查发现是LayoutInflater.inflate()函数参数使用不当。了解到LayoutInflater的作用是将XML布局转换为View对象,区别于setContentView()。正确做法是将inflate的第二个参数设为null。
5653

被折叠的 条评论
为什么被折叠?



