永发信息网

android编程看不懂getView函数请帮忙每行标注下,解释下这个函数的作用意义

答案:3  悬赏:70  手机版
解决时间 2021-11-16 03:12
  • 提问者网友:轮囘Li巡影
  • 2021-11-15 13:13
android编程看不懂getView函数请帮忙每行标注下,解释下这个函数的作用意义
最佳答案
  • 五星知识达人网友:动情书生
  • 2021-11-15 14:21
@Override
public View getView( int position, View converView, ViewGroup Parent) {
    Fruit fruit = getItem(postion);//从数据里获取当前位置的实体
    View view = LayoutInflater.from(getContext()).inflate(resourcedId, null);//获取将当前位置的布局
    ImageView fruitImage = (ImageView) view.findViewById(R.id.fruit_image);//获取ImageView
    TextView fruitName = (TextView) view.findViewById(R.id.fruit_name);//获取TextView
    fruitImage.setImageResource(fruit.getImageId());//给ImageView添加图片
    fruitName.setText(fruit.getName());//给TextView添加文字
    return view;//将整个布局返回
}追问Fruit fruit = getItem(postion);//从数据里获取当前位置的实体,获取的这个对象有啥用啊,又没见使用
getContext()是啥作用,
return view;//将整个布局返回,返回给谁使用啊追答1、Fruit fruit = getItem(postion);//从数据里获取当前位置的实体,获取的这个对象有啥用啊,又没见使用
--------你在定义adapter的时候,传进来了一个list类型的数据,就是这个了。adapter调用getItem()方法,从list里取出一个Fruit类型的数据,那么在下面,你就可以使用这个实体,根据这个实体取出它对应的数据:fruit.getImageId(),fruit.getName()。

2、getContext()是啥作用
--------有一个变量名叫context(上下文),在android里,这个变量是很重要的。很多地方都需要使用它。这里getContext()就是用来获取这个context变量的。

3、return view;//将整个布局返回,返回给谁使用啊
--------return会把结果返回给调用这个getView()方法的地方。这个方法是在adapter里的,系统有默认的调用处,ListView等setAdapter()了,那么这个view最终会到ListView等控件里去了。追问还有个问题请教大神,就是怎么知道该画哪一个item,是不是和参数position有关,具体的运行过程是咋样的啊 View converView, ViewGroup Parent这两个参数传进来也没见用过。追答position就是当前view的一个索引值,由它来确定是哪一个item。
converView,以后你会看到一种复用控件的写法,就会用到这个参数。
至于Parent,暂时没什么用处。
全部回答
  • 1楼网友:等灯
  • 2021-11-15 16:48
从布局文件创建一个组件view,并为这个组件设置内容,最后返回给适配器,让适配器把这个view显示在界面上,这个很显然是个初级代码,效率很低,建议你学习一下ViewHolder
  • 2楼网友:雪起风沙痕
  • 2021-11-15 15:47
Fruit fruit = getItem(postion);// 获取集合中每的一个对象,这个应该是在你getItem(int position)里面写的,其实就是它帮你循环找到了当前点击的那一条对应list里面对应的那一条

View view = LayoutInflater.from(getContext()).inflate(resourcedId, null);// 查找你列表里面每一条的布局文件

ImageView fruitImage = (ImageView) view.findViewById(R.id.fruit_image);// 找到图片这个控件

TextView fruitName = (TextView) view.findViewById(R.id.fruit_name);// 找到文字显示的这个控件

fruitImage.setImageResource(fruit.getImageId());// 你对像里面对应的那个图片ID-此处对象是你在上面已经获取到的那个fruit

fruitName.setText(fruit.getName());// // 你对像里面对应的那个名字-此处对象是你在上面已经获取到的那个fruit
return view;// 返回显示到列表里面去

(这个方法是你要显示列表里面每条必不可少的一个方法,你若不做以上控制是不会有任何样式或数据显示在你列表的每一个item上的)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯