点击切换listView的列数(一列变为两列)
来源:互联网 发布:压缩感知测量矩阵代码 编辑:程序博客网 时间:2024/05/21 21:50
这是一个简单的小demo,点击一下radiobutton,切换listview的列数:
主要代码还是在自定义的BasaAdapter的getView中来实现的:
因为时间匆忙,所以就将就这样用吧,以后有空再更改吧:
大概是这样的效果:
还有这样的:
BaseAdapter子类:
public class MyAdapter extends BaseAdapter {/** 布局是会变的 */private int layoutId;private Context context;private ArrayList<String> data;/** 1:single 2:double */private int flag = 1;public MyAdapter(Context context, int layoutId, ArrayList<String> data,int flag) {this.context = context;this.layoutId = layoutId;this.data = data;this.flag = flag;}public int getLayoutId() {return layoutId;}public void setLayoutId(int layoutId) {this.layoutId = layoutId;}public int getFlag() {return flag;}public void setFlag(int flag) {this.flag = flag;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn data.size() / flag;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@SuppressWarnings("null")@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubHoldeView holdeView = null;if (convertView == null) {holdeView = new HoldeView();LayoutInflater inflater = LayoutInflater.from(context);convertView = inflater.inflate(layoutId, null);if (flag == 1) {holdeView.t_single = (TextView) convertView.findViewById(R.id.tv_single);} else if (flag == 2) {holdeView.t_d_1 = (TextView) convertView.findViewById(R.id.tv_d_1);holdeView.t_d_2 = (TextView) convertView.findViewById(R.id.tv_d_2);}convertView.setTag(R.id.convertview_holdview, holdeView);} else {holdeView = (HoldeView) convertView.getTag(R.id.convertview_holdview);}/** 设置数据 */return convertView;}static class HoldeView {TextView t_single;TextView t_d_1;TextView t_d_2;}}
Activity的代码:
public class MainActivity extends Activity implements OnCheckedChangeListener {private RadioGroup rg;private ListView lv;private MyAdapter adapter;private ArrayList<String> data;private int flag = 1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);rg = (RadioGroup) findViewById(R.id.rg);lv = (ListView) findViewById(R.id.lv);data = new ArrayList<String>();addData();adapter = new MyAdapter(MainActivity.this, R.layout.single, data, 1);lv.setAdapter(adapter);rg.setOnCheckedChangeListener(this);((RadioButton) (rg.getChildAt(0))).setChecked(true);}private void addData() {for (int i = 0; i < 60; i++) {data.add(i + "");}}@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {// TODO Auto-generated method stubint currentitem = 0;switch (checkedId) {case R.id.rb_single:currentitem = lv.getFirstVisiblePosition();flag = 1;adapter.setFlag(flag);// adapter.setLayoutId(R.layout.single);adapter = new MyAdapter(MainActivity.this, R.layout.single, data,flag);lv.setAdapter(adapter);/** 刷新一下listview */lv.invalidate();lv.setSelection(currentitem * 2);break;case R.id.rb_double:currentitem = lv.getFirstVisiblePosition();Log.e("positon", currentitem + "");flag = 2;adapter.setFlag(flag);adapter = new MyAdapter(MainActivity.this, R.layout.double_layout,data, flag);lv.setAdapter(adapter);/** 刷新一下listview */lv.invalidate();lv.setSelection(currentitem / 2);break;}}}
代码地址:http://download.csdn.net/detail/yymonkeydo/8128661
0 0
- 点击切换listView的列数(一列变为两列)
- excel如何将一列按奇偶数分成两列
- mysql两列合成一列
- mysql-一列的值要显示两列
- ListView点击列排序
- ListView点击列排序的实现
- excel一列数据拆分为两列
- execl合并两列数据为一列
- SQL查询两列合并一列
- 如何将同一表的一列数据完全复制到另一列(两列数据类型相同)
- 两列,一列有宽度,另外一列自适应(div 布局)
- CSS布局之两列布局一列固定一列自适应
- html 三列布局(两列固定宽度,一列自适应)
- CSS实现网页布局(一列,两列,三列)
- 怎么根据 一张表中的两列 选出另外一张表(此表也包含前一张表的两列)的一列
- ListView点击列头排序
- ListView点击列头排序
- 动态生成 指定列数、行数的表格。并在每行最后一列添加一个删除按钮。点击删除按钮、删除本行!
- uva 10099(最短路径)
- 雷霆湖人饱受伤病可凑残蓝队 1
- ORACLE 树形查询 树查询
- 雷霆湖人饱受伤病可凑残蓝队 1
- 黑马程序员-day20字节流及字节流缓冲区
- 点击切换listView的列数(一列变为两列)
- Oracle误删除数据恢复
- C/C++:C++执行父类的构造方法
- uva10099(最长路问题Floyd)
- HDU 1.2.6 Lowest Bit
- url地址美化
- cocos2dx3.屏幕适配问题的解决方案
- NumPy学习笔记(1)
- 反向代理服务器的工作原理