仿知乎日报第七篇:为菜单区加载布局以及加载数据
2016-09-19 16:30
211 查看
一.我们已经把内容区的布局讲完了,具体为这个布局加载数据后面再讲。现在我们先讲一下给菜单区(LeftFragment)加载布局,并且加载数据。因为相较内容区,菜单区的布局,加载都要简单些。
1.先看看具体的效果:
![](http://img.blog.csdn.net/20160919163232417?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
这个结构很简单,整个一个LinearLayout,上面也是一个LinearLayout,里面是一个ImageView加上一个TextView,下面就是一个ListView。所以直接看代码吧:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/ll_left_fragement_base_home"
android:layout_width="match_parent"
android:layout_height="60dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="5dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:src="@drawable/home" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="首页"
android:textColor="#3CB371"
android:textSize="20sp"/>
</LinearLayout>
<ListView
android:id="@+id/lv_left_fragment_list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
//ListView选中时的背景色
android:listSelector="#44008B00"
//不要分割线
android:divider="@null">
</ListView>
</LinearLayout>
2.这里有个ListView,所以呢,我们当然要为它的item创建布局
效果:
![](http://img.blog.csdn.net/20160919163252761?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="20dp"
android:paddingBottom="20dp" >
<TextView
android:id="@+id/tv_left_fragment_list_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="日常心理学"
android:textSize="18sp"
android:layout_marginLeft="20dp"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/menu_arrow"
android:layout_alignParentRight="true"
android:layout_marginRight="20dp"
/>
</RelativeLayout>
上面布局很简单,只有一个TextView,一个ImageView
二.现在我们要在代码中加载布局了
public class LeftFragment extends BaseFragment {
private View mRoot;
private LinearLayout mLlHome;
private ListView mLvContent;
// ListView的数据
private String[] mDatas = new String[] { "日常心理学", "用户推荐日报", "电影日报",
"不许无聊", "设计日报", "大公司日报", "财经日报", "互联网安全", "开始游戏", "音乐日报", "动漫日报",
"体育日报" };
@Override
protected View initView() {
// 加载布局,以及拿到布局中的控件
mRoot = View.inflate(mainActivity, R.layout.left_fragent_base, null);
mLlHome = (LinearLayout) mRoot
.findViewById(R.id.ll_left_fragement_base_home);
mLvContent = (ListView) mRoot
.findViewById(R.id.lv_left_fragment_list_view);
return mRoot;
}
@Override
protected void initData() {
super.initData();
MyAdapter adapter = new MyAdapter();
// 为ListView设置Adapter
mLvContent.setAdapter(adapter);
}
private class MyAdapter extends BaseAdapter {
/*
* 返回数据的个数
*/
@Override
public int getCount() {
return mDatas.length;
}
@Override
public Object getItem(int position) {
// TODO自动生成的方法存根
return null;
}
@Override
public long getItemId(int position) {
// TODO自动生成的方法存根
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroupparent) {
ViewHolder viewHolder;
if (convertView == null) {
// 1.加载ListView各个item的布局
convertView = View.inflate(mainActivity,
R.layout.left_fragment_list_item, null);
viewHolder = new ViewHolder();
// 2.拿到item布局中TextView
viewHolder.tvTitle = (TextView) convertView
.findViewById(R.id.tv_left_fragment_list_title);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
// 3.为TextView设置数据
viewHolder.tvTitle.setText(mDatas[position]);
return convertView;
}
}
private class ViewHolder {
TextView tvTitle;
}
}
上面虽然代码多,但是逻辑很简单:
1)将布局加载进来
2)用数据源来为ListView创建一个Adapter
2)为ListView设置Adapter
1.先看看具体的效果:
这个结构很简单,整个一个LinearLayout,上面也是一个LinearLayout,里面是一个ImageView加上一个TextView,下面就是一个ListView。所以直接看代码吧:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/ll_left_fragement_base_home"
android:layout_width="match_parent"
android:layout_height="60dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="5dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:src="@drawable/home" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="首页"
android:textColor="#3CB371"
android:textSize="20sp"/>
</LinearLayout>
<ListView
android:id="@+id/lv_left_fragment_list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
//ListView选中时的背景色
android:listSelector="#44008B00"
//不要分割线
android:divider="@null">
</ListView>
</LinearLayout>
2.这里有个ListView,所以呢,我们当然要为它的item创建布局
效果:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="20dp"
android:paddingBottom="20dp" >
<TextView
android:id="@+id/tv_left_fragment_list_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="日常心理学"
android:textSize="18sp"
android:layout_marginLeft="20dp"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/menu_arrow"
android:layout_alignParentRight="true"
android:layout_marginRight="20dp"
/>
</RelativeLayout>
上面布局很简单,只有一个TextView,一个ImageView
二.现在我们要在代码中加载布局了
public class LeftFragment extends BaseFragment {
private View mRoot;
private LinearLayout mLlHome;
private ListView mLvContent;
// ListView的数据
private String[] mDatas = new String[] { "日常心理学", "用户推荐日报", "电影日报",
"不许无聊", "设计日报", "大公司日报", "财经日报", "互联网安全", "开始游戏", "音乐日报", "动漫日报",
"体育日报" };
@Override
protected View initView() {
// 加载布局,以及拿到布局中的控件
mRoot = View.inflate(mainActivity, R.layout.left_fragent_base, null);
mLlHome = (LinearLayout) mRoot
.findViewById(R.id.ll_left_fragement_base_home);
mLvContent = (ListView) mRoot
.findViewById(R.id.lv_left_fragment_list_view);
return mRoot;
}
@Override
protected void initData() {
super.initData();
MyAdapter adapter = new MyAdapter();
// 为ListView设置Adapter
mLvContent.setAdapter(adapter);
}
private class MyAdapter extends BaseAdapter {
/*
* 返回数据的个数
*/
@Override
public int getCount() {
return mDatas.length;
}
@Override
public Object getItem(int position) {
// TODO自动生成的方法存根
return null;
}
@Override
public long getItemId(int position) {
// TODO自动生成的方法存根
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroupparent) {
ViewHolder viewHolder;
if (convertView == null) {
// 1.加载ListView各个item的布局
convertView = View.inflate(mainActivity,
R.layout.left_fragment_list_item, null);
viewHolder = new ViewHolder();
// 2.拿到item布局中TextView
viewHolder.tvTitle = (TextView) convertView
.findViewById(R.id.tv_left_fragment_list_title);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
// 3.为TextView设置数据
viewHolder.tvTitle.setText(mDatas[position]);
return convertView;
}
}
private class ViewHolder {
TextView tvTitle;
}
}
上面虽然代码多,但是逻辑很简单:
1)将布局加载进来
2)用数据源来为ListView创建一个Adapter
2)为ListView设置Adapter
相关文章推荐
- 利用JQuery的load函数动态加载页面 以及jQuery动态加载页面和请求所返回的数据
- javascript树形菜单(一):Tigra Tree Menu,实现动态数据加载
- UITableView 分页显示、加载更多,数据源远程数据,解析JSON,以及iOS☞Category
- C# checklistbox控件用法总结(怎样得到多选的值,以及动态加载数据)
- SolpartMenu的使用:(二)、在ASP.NET页面中使用SolpartMenu控件之动态的加载数据库中的数据来生成菜单
- Android学习笔记_31_通过后台代码生成View对象以及动态加载XML布局文件到LinearLayout
- android左右滑动加载分页以及动态加载数据
- android左右滑动加载分页以及动态加载数据
- EF如何操作内存中的数据以及加载相关联表的数据:延迟加载、贪婪加载、显示加载
- ListView动态加载数据模板(使用xml布局)
- ListView动态加载数据模板(使用代码布局)
- SolpartMenu的使用:(二)、在ASP.NET页面中使用SolpartMenu控件之动态的加载数据库中的数据来生成菜单
- 点击导航条的某一项,与之相对应的Iframe的切换同时加载数据(可用于多级菜单)
- android左右滑动加载分页以及动态加载数据
- flex4 datagrid 加载数据 以及MQ推动的数据模拟
- ListView动态加载数据模板(使用代码布局)
- 【android动态布局】之【ListView动态加载数据模板(使用xml布局)】
- 二、瀑布流数据加载后的布局处理(瀑布流的封装)
- treeview加载数据以及gridview双击时加载treeview是否选中,留个脚印