做网站课程报告,asp制作网站,专门做美食的视频网站,成都中企动力怎么样3.11 ViewAdapter
View是视图文件,表示页面的框架结构。Adapter适配器,通过适配器填充数据信息。
1、简单ListView使用 ListView用来显示一个相同样式的视图列表。 ListView无法直接将数据显示,需要先将Data数据放入Adapter适配器,然后ListView绑定适配器。
操作步骤…3.11 ViewAdapter
View是视图文件,表示页面的框架结构。Adapter适配器,通过适配器填充数据信息。
1、简单ListView使用 ListView用来显示一个相同样式的视图列表。 ListView无法直接将数据显示,需要先将Data数据放入Adapter适配器,然后ListView绑定适配器。
操作步骤: 1.在layout布局中创建ListView; 2.在layout对应ActivityActivity中创建对应ListView对象listView; 3.创建数据ArrayListString类型的list; 4.创建ListViewAdapter类继承BaseAdapter,在Activity中创建ListViewAdapter类对象listViewAdapter,传入参数list,上下文; 5.调用listView对象的setAdapter方法,绑定listViewAdapter;
示例:
创建t_listview.xml文件,ListView标签,设置id。
?xml version="1.0" encoding="utf-8"?LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"ListViewandroid:id="@+id/ListView1"android:layout_width="match_parent"android:layout_height="match_parent"/ListView/LinearLayout
创建ListViewAdapter类继承BaseAdapter类。
public class ListViewAdapter extends BaseAdapter {private ArrayListString strlists;private Context mContext;public ListViewAdapter(ArrayListString list,Context context){this.strlists=list;this.mContext=context;}//获取list大小@Overridepublic int getCount() {return strlists.size();}@Overridepublic Object getItem(int position) {return null;}@Overridepublic long getItemId(int position) {return position;}//创建空的View,放入数据//position当前位置//ViewGroup parent:每次调用都有一个空容器,返回值的view添加到空容器,getContext方法获取容器context//convertView:ItemView显示内容@Overridepublic View getView(int position, View convertView, ViewGroup parent) {//创建一个空TextViewTextView textView = new TextView(mContext);//设置宽高textView.setLayoutParams(new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT,AbsListView.LayoutParams.WRAP_CONTENT));//设置文本大小textView.setTextSize(30);//设置文本textView.setText(strlists.get(position));return textView;}} 创建ListViewActivity类继承Activity。
public class ListViewActivity extends Activity {//上下文private Context mContext;private ListView listView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//绑定layoutsetContentView(R.layout.t_listview);//上下文初始化mContext = ListViewActivity.this;//获取ListViewlistView = (ListView) findViewById(R.id.ListView1);//创建数据listArrayListString list = new ArrayListString();//添加数据for(int i=0;i5;i++){list.add("listView"+i);}//创建ListViewAdapter对象ListViewAdapter listViewAdapter = new ListViewAdapter(list,mContext);//ListView绑定AdapterlistView.setAdapter(listViewAdapter);}} 2、BaseAdpater优化
1.使用LayoutInfalter优化
当ListView中的内容不是简单的字符串表时,ListViewAdpater类中的getView方法中就不是简单创建一个TextView可以解决问题,需要创建多个View组件,这个时候,我们需要根据ListView中子Item的结构自动生成View组件。
示例:
创建子Item的布局文件t_listview_item.xml。
?xml version="1.0" encoding="utf-8"?LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"TextViewandroid:id="@+id/tv1"android:layout_width="match_parent"android:layout_height="wrap_content"android:textSize="30dp"/TextView/LinearLayout 修改getView方法中逻辑:
//LayoutInflater类将一个布局变成一个类LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());//inflate参数1:布局页面,参数2:root是否加入到某个容器View view = layoutInflater.inflate(R.layout.t_listview_item,null);TextView textView = view.findViewById(R.id.tv1);textView.setText(strlists.get(position));return view; Android提供一些固定的子Item布局:
示例:
//android提供了一些布局页面android.R.layout.XXXX//示例:android.R.layout.simple_list_item_1View view1= layoutInflater.inflate(android.R.layout.simple_list_item_1,null); 2.使用convertView优化