点击切换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
原创粉丝点击