android学习之LayoutInflater的用法,在myAdapter getView()里将多个TextView组件压缩成一个View控件,并在listView里显示...

 1、在LayoutInflater通常有下面2种初始化的方法,在Active里调用时很容易。

   1、  LayoutInflater inflater=LayoutInflater.from(context);

   2、	 LayoutInflater inflater = (LayoutInflater)context.getSystemService
			      (Context.LAYOUT_INFLATER_SERVICE);             

  

 2、创建myAdapter类时候在getView()方法里使用LayoutInflater时,通常将MainActivity传进来,将Context context传进,这样在getView()方法里时候就可以用上面的方法初始化。对于getview()的参数,查api文档很抽象,通过在代码里设置个断点在内存里查看参数发现,parent就是Listview。convertView是listview

的缓存(查资料所得)。

  

public View getView(int position, View convertView, ViewGroup parent)
{
		 LayoutInflater inflater=LayoutInflater.from(context);//MainActivity.inflater;
//		 LayoutInflater inflater = (LayoutInflater)context.getSystemService
//			      (Context.LAYOUT_INFLATER_SERVICE);

		View view=inflater.inflate(R.layout.item2, null);
//这里是将item2.xml传入到了view对象,因此后面才可以用view.findVIewById方法,主函数里的SetContentView(R.layout.activity_main)
//也是加载xml,将当前activity显示该xml里的内容,又因为主函数activity继承View的,它其实是view的一个容器,
//因此主函数里可以直接用findVIewById方法,只能查找activity_main里的空间的id,因此如果想在其他类用activity_main里的
//控件,可以将MainActivity act的形式当作类的成员传进来,再用act.findViewById();
		TextView text=(TextView) view.findViewById(R.id.tv_name);		
		text.setText(personlist.get(position).getName());
		TextView text2=(TextView) view.findViewById(R.id.tv_money);
		text2.setText(personlist.get(position).getMoney()+"");
     TextView text0=new TextView(context);
     text0.setText("hello");
		return view;
//这里的返回值时如果用view.findViewById后的控件,如果多个控件则要么返回view,要么返回和这几个控件无关的控件如text0,
//不能返回其中的一个,否则会出现异常;当然如果只findViewById一个控件时候,可以返回这个控件。
	}

  

转载于:https://www.cnblogs.com/bokeofzp/p/4659446.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值