前言:
开始研究android开发已经有两个星期之久的,期间遇到很多不解的地方,经过一番努力最终解开了我的疑惑。
依旧担心会忘记,故做一下关于View与Layout XML文件之间的关系总结:
正题:
首先构建两个Layout XML文件A和B,其中A包含了一个GridView或者ListView控件,
![示意图,如无法显示,打开图片链接即可](https://img-blog.csdn.net/20160722094244873)
涉及知识点:
1、Layout XML文件视图的构建
2、BaseAdapter适配器的使用
3、如何将XML渲染成一个View
4、如何获取由XML渲染成的View内的控件ID
解决办法:
1、首先中获得A.xml中GridView(以此为例)控件的ID
GridView gridView = (GridView) findViewById(R.id.gridView)
2、获得ID之后,为GridView添加一个适配器
gridView.setAdapter(new GridViewAdapter());
3、接下来是继承自BaseAdapter的GridViewAdapter方法的重构,这里重点说一下getView()方法
public View getView(int i, View view, ViewGroup viewGroup) {
3.1//通过View类的inflate方法在MainActivity活动窗口中将B.xml文件加载并返回一个View
View newView = View.inflate(MainActivity.this,R.layout.B,null)
3.2//依旧通过findViewById方法获取控件,不同的是:获取得是newView内的控件,故要加newView进行限定
TextView textView1 = (TextView)newView.findViewById(R.id.tv_id)
TextView textView2 = (TextView)newView.findViewById(R.id.tv_name)
TextView textView3 = (TextView)newView.findViewById(R.id.tv_phone)
3.3//接下来对获取到的控件进行内容设置即可
textView1.setText(person.ID[i]+"")
textView2.setText(person.Name[i]+"")
textView3.setText(person.Phone[i]+"")
3.4//最后将由B.xml渲染成的View return出来
return newView
}
小注:
对于将XML渲染成一个View也可以采用如下方法
LayoutInflater inflater = LayoutInflater.from(活动窗体.this);
View view = inflater.inflate(Layout XML文件,null);