android学习笔记之:利用listview达到表格数据横向排列的效果
2013-04-17 10:59
477 查看
一、实现效果如下图
二、两种实现方法
1.通过list数据源在textview中进行横向赋值操作。
Layout coding:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/relativeLayout1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/detail_project1_tv" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:text="项目" android:textSize="20sp" android:background="@drawable/textviewborder" android:gravity="center" android:textColor="@color/black" /> <TextView android:id="@+id/detail_params1_tv" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:text="参数" android:textSize="20sp" android:background="@drawable/textviewborder" android:gravity="center" android:textColor="@color/black" /> <TextView android:id="@+id/detail_project2_tv" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:text="项目" android:textSize="20sp" android:background="@drawable/textviewborder" android:gravity="center" android:textColor="@color/black" /> <TextView android:id="@+id/detail_params2_tv" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:text="参数" android:textSize="20sp" android:background="@drawable/textviewborder" android:gravity="center" android:textColor="@color/black" /> </LinearLayout>给textview加上边框:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <solid android:color="#00000000" /> <stroke android:width="2dip" android:color="#3B536E" /> </shape>Adapter
coding:
public class OrderMealDetailAdapter extends BaseAdapter { private LayoutInflater mInflater; public Context context; public List<NutrientContent> nutrientList = null; public OrderMealDetailAdapter(Context context) { this.context = context; this.mInflater = LayoutInflater.from(this.context); } @Override public int getCount() { // TODO Auto-generated method stub if (nutrientList != null) return nutrientList.size(); else return 0; } @Override public Object getItem(int position) { // TODO Auto-generated method stub if (nutrientList != null) return nutrientList.get(position); else return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub if (nutrientList != null) return position; else return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub Holder holder = null; if (convertView == null) { convertView = mInflater.inflate(R.layout.ordermeal_detail_item, null); holder = new Holder(); holder.detail_project1_tv = (TextView) convertView .findViewById(R.id.detail_project1_tv); holder.detail_params1_tv = (TextView) convertView .findViewById(R.id.detail_params1_tv); holder.detail_project2_tv = (TextView) convertView .findViewById(R.id.detail_project2_tv); holder.detail_params2_tv = (TextView) convertView .findViewById(R.id.detail_params2_tv); convertView.setTag(holder); } else { holder = (Holder) convertView.getTag(); } //换行进行横向数据填充 if (position % 2 == 0) { //填充一行中前两个元素 holder.detail_project1_tv .setText(nutrientList.get(position).project); holder.detail_params1_tv .setText(nutrientList.get(position).element); holder.detail_project1_tv.setVisibility(View.VISIBLE); holder.detail_params1_tv.setVisibility(View.VISIBLE); //填充一行中后两个元素 if (nutrientList.size() > position + 1) { holder.detail_project2_tv.setText(nutrientList .get(position + 1).project); holder.detail_params2_tv .setText(nutrientList.get(position + 1).element); holder.detail_project2_tv.setVisibility(View.VISIBLE); holder.detail_params2_tv.setVisibility(View.VISIBLE); } else { //没有可填充数据 holder.detail_project2_tv.setText(""); holder.detail_params2_tv.setText(""); } } else { //把后一行的数据移到前一行来,后一行隐藏操作 holder.detail_project1_tv.setVisibility(View.GONE); holder.detail_params1_tv.setVisibility(View.GONE); holder.detail_project2_tv.setVisibility(View.GONE); holder.detail_params2_tv.setVisibility(View.GONE); } return convertView; } class Holder { TextView detail_project1_tv; // 项目1 TextView detail_params1_tv; // 参数1 TextView detail_project2_tv; TextView detail_params2_tv; } // 退出 public void exit() { nutrientList = null; notifyDataSetChanged(); mInflater = null; context = null; }
2.通过循环,迭代tablerow进行横向赋值
1 | 代码这里就不贴了。。。 |
相关文章推荐
- Excel 利用“条件格式”命令 快速设置数据表格的阴影间隔效果
- Android学习笔记(20)————利用ListView制作带竖线的多彩表格
- Android学习笔记(20)————利用ListView制作带竖线的多彩表格 .
- Android学习笔记(20)————利用ListView制作带竖线的多彩表格
- Android学习笔记(20)————利用ListView制作带竖线的多彩表格
- 【WPF】ListView 大图标 横向排列效果
- Android学习笔记(20)————利用ListView制作带竖线的多彩表格
- 利用XML缓存数据达到缓解数据库服务器压力的代码利用片段
- 利用freemarker 在模板里面写入动态数据,动态表格,图片插入并生成word文档
- 一起学android之设置ListView数据显示的动画效果(24)
- 利用setPadding使得ListView有回弹效果
- 将数据库中的纵向排列数据改写成横向排列数据
- jQuery利用ajax调取json数据生成表格
- android表格效果--ListView隔行变色
- 【Servlet】在Servlet3.0中利用ajax达到iframe局部刷新效果,同时避免在Js写过多的HTML代码
- 如何利用一个变量来达到多重循环的效果?
- Android中利用GridView实现水平和垂直均有滚动条的表格效果
- 利用listview实现简要的QQ聊天效果
- android绚丽的ListView表格效果的实现
- 本地数据下,radiobutton和图片组合,利用adapter+listview进行单选