ListView一行显示两个Item并实现单选功能
来源:互联网 发布:目标软件郑州 编辑:程序博客网 时间:2024/05/17 12:06
最终效果如上图所示意
核心代码只要是Adapter里面完成一行显示两个item,并且加入一个回调接口进行返回数据
public class MyAdapter extends BaseAdapter {private List<Payment> mList;private Context mContext;private int sumCount;private ChangeTextView changeTextView;public Handler handler = new Handler() {public void handleMessage(Message msg) {switch (msg.what) {case 1:changeTextView.changeTheText(msg.arg1);break;default:break;}};};public MyAdapter(List<Payment> List, Context context, ChangeTextView changeTextView) {this.mList = List;this.mContext = context;this.changeTextView = changeTextView;}@Overridepublic int getCount() {int count = mList.size();if (count % 2 == 0) {sumCount = count / 2; // 如果是双数直接减半} else {sumCount = (int) Math.floor((double) count / 2) + 1;}return sumCount;}@Overridepublic Object getItem(int position) {return mList.get(position);}@Overridepublic long getItemId(int position) {return position;}static class ViewHolder {PayItem payitem1;PayItem payitem2;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder = null;if (convertView == null) {holder = new ViewHolder();convertView = LayoutInflater.from(mContext).inflate(R.layout.list_pay_item, null);holder.payitem1 = (PayItem) convertView.findViewById(R.id.payItem1);holder.payitem2 = (PayItem) convertView.findViewById(R.id.payItem2);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}holder.payitem1.setDescription(mList.get(position * 2).getDescription());holder.payitem1.setDetail(mList.get(position * 2).getDetail());holder.payitem1.setCharge(mList.get(position * 2).getCharge());holder.payitem1.setIsSelected(mList.get(position * 2).getStatus());if (position * 2 + 1 == mList.size()) {holder.payitem2.setVisibility(View.INVISIBLE); // 如果是单数的话,那么最后一个item,右侧内容为空} else {holder.payitem2.setVisibility(View.VISIBLE); // 必须进行设置,负责存在复用holder的时候,会出现右侧的出现留白,跟最后一个一样,这个也是我写这篇文章最想锁的holder.payitem2.setDescription(mList.get(position * 2 + 1).getDescription());holder.payitem2.setDetail(mList.get(position * 2 + 1).getDetail());holder.payitem2.setCharge(mList.get(position * 2 + 1).getCharge());holder.payitem2.setIsSelected(mList.get(position * 2+1).getStatus());}holder.payitem1.setMyItemClickedListener(new MyOnEvenClick(position));holder.payitem2.setMyItemClickedListener(new MyOnOddClick(position));return convertView;}private class MyOnEvenClick implements MyItemClicked {int pos = 0;public MyOnEvenClick(int position) {this.pos = position * 2;}@Overridepublic void myItemClicked() {Message message = new Message();message.what = 1;message.arg1 = pos;handler.sendMessage(message);}}private class MyOnOddClick implements MyItemClicked {int pos = 0;public MyOnOddClick(int position) {this.pos = position * 2 + 1;}@Overridepublic void myItemClicked() {Message message = new Message();message.what = 1;message.arg1 = pos;handler.sendMessage(message);}}// 设置监听interface ChangeTextView {void changeTheText(int position);}}整个项目托管到GitHub上了
https://github.com/matrixth/AndroidTools
界面很单薄,可以自行修改
阅读全文
0 0
- ListView一行显示两个Item并实现单选功能
- Android ListView 实现Item单选效果
- ListView实现每行显示两个item(假)
- Android ListView中点击单行实现RadioButton的单选功能,自定义Item布局文件
- ListView实现单选功能
- android ListView item 中放ListView 只显示一行解决办法
- ListView 中item 单选
- 在ListView的Item中使用RadioButton实现单选
- ListView 加checkBox实现 单选功能
- Listview实现简单的单选功能
- Android实现listView的单选功能
- ListView指定第几个item显示在第一行
- Android ListView 自定义用法(ListView 实现单选功能)
- 实现listview的item侧滑功能
- Android小功能:在ListView中实现单选功能
- C# listview如何显示网格线以及如何实现item的选中功能
- listview头布局是gridview时 gridview设置单选效果 子item显示不全问题
- Android中关于ScrollView嵌套listView,ListView Item只显示一行的解决方法
- Android Wi-Fi Scan Only模式开/关
- 深入理解 Java 垃圾回收机制
- a标签超链接时跳转到新窗口
- 允许远程服务器无密码登录
- 如何使用YSLOW提高网站性能
- ListView一行显示两个Item并实现单选功能
- WEB前端听课笔记——HTML基础概念
- 解析IOS二进制格式的bplist
- asp.net webApi 支持js的跨域请求
- android service笔记
- 小天使改名(水题 杭电排位赛-2)
- 【codevs 1212】最大公约数
- 二.贝叶斯决策论
- 从远程服务器下载文件