Android-Listview和Gridview(MVC创建)
2020-05-27 本文已影响0人
a1a4b0d9e20c
1、页面中初始化控件
//定义
private List<ItemBean> dataList;
private LayoutInflater mInflater;
private LinearLayout headListView;
private LinearLayout footerListView;
//控件代码
ListView listView = (ListView) findViewById(R.id.dome_listview);
//数组初始化
dataList = new ArrayList<>();
//假数据
for (int i = 0;i < 50;i ++){
dataList.add(new ItemBean("张三"+i,i + "岁","男"));
}
//添加头部、尾部视图
mInflater = LayoutInflater.from(this);
headListView = (LinearLayout)mInflater.inflate(R.layout.headlistview,null);
footerListView = (LinearLayout) mInflater.inflate(R.layout.footerlistview,null);
listView.addHeaderView(headListView);
listView.addFooterView(footerListView);
//赋值控件Adapter + +-+`-+----
listView.setAdapter(new UserUnfoListAdapter(this,dataList));
//item点击事件
listView.setOnItemClickListener(this);
2、点击事件
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
System.out.println("点击了" + position);
}
3、创建Model
public class ItemBean {
//ItemName 、ItemAge、ItemSex 服务器返回的字段名
public String ItemName;
public String ItemAge;
public String ItemSex;
public ItemBean(String itemName, String itemAge, String itemSex) {
ItemName = itemName;
ItemAge = itemAge;
ItemSex = itemSex;
}
}
4、创建Adapter
//创建Adapter
public class UserUnfoListAdapter extends BaseAdapter{
private List<ItemBean> dataList = new ArrayList<>();
public UserUnfoListAdapter(Context context, List<ItemBean> list) {
dataList = list;
//固定写法
mInflater = LayoutInflater.from(context);
}
@Override
//用来返回数据源的个数
public int getCount() {
return dataList.size();
}
@Override
//用来返回指定position的数据源
public Object getItem(int position) {
return dataList.get(position);
}
@Override
//用来返回指定position的数据源的ID
public long getItemId(int position) {
return position;
}
@Override
//返回指定position的每一个item的布局文件的view,这个view将会显示在指定position的位置
public View getView(int position, View convertView, ViewGroup parent) {
View itemRootView = mInflater.inflate(R.layout.item,null);
//对布局资源文件里面的textview进行赋值
TextView tvName = (TextView) itemRootView.findViewById(R.id.tv_name);
TextView tvAge = (TextView) itemRootView.findViewById(R.id.tv_age);
TextView tvSex = (TextView) itemRootView.findViewById(R.id.tv_sex);
ItemBean bean = dataList.get(position);
//图片取值
//imageView.setImageResource(bean.ItemImageResId);
//文本取值
tvName.setText(bean.ItemName);
tvAge.setText(bean.ItemAge);
if (position % 2 ==0){
tvSex.setText("男");
if (tvSex.getText().toString().equals("男")){
tvSex.setText("女");
}
}else {
tvSex.setText("女");
}
return itemRootView;
}
}
5、主页面布局
<!--dividerHeight:分割线高度;scrollbars:右侧显示线;overScrollMode:隐藏阴影-->
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/dome_listview"
android:entries="@array/grade"
android:divider="#f00"
android:dividerHeight="1px"
android:scrollbars="none"
android:overScrollMode="never"
></ListView>
<GridView
android:id="@+id/grid_view_menu"
android:numColumns="3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
></GridView>
6、cell里面的布局 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">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv_name"/>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv_age"/>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv_sex"/>
</LinearLayout>
7、头视图布局 headlistview.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<View android:layout_width="match_parent"
android:layout_height="40dp"
android:background="#f00"
></View>
</LinearLayout>
8、尾视图布局 footerlistview.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<View android:layout_width="match_parent"
android:layout_height="40dp"
android:background="#f00"
></View>
</LinearLayout>