自定义android原始公用adapter

当我们使用android原有的一些公用的adapter的时候,会发现有些地方并不能满足自己的需求,我们需要更改需要使用更加完善的UI界面和用户使用体验。而且,我们也并不是每个地方都需要用到这个自定义的view,我们可以使用android原有提供给我们的公共的adapter经过后续加工后使得满足我们自己的需求就好了。

下面一个实例。

private mAdapter<String> mAdapter;
mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice);

这里使用的是android中原有的一个多checkBox的listView的adapter。但是,我们需要的一些功能却不能被实现。比如,单行显示,控制行距,控制背景色。

所以,我们可以使用自定义的adapter来处理。这个自定义adapter同样使用到上面的layout。

private mAdapter<String> mAdapter;
mAdapter = new MyCheckBoxAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice);
public class MyCheckBoxAdapter<String> extends ArrayAdapter<String> {
		private LayoutInflater mInflater = null;

		public MyCheckBoxAdapter(Context context, int layout) {
			super(context,layout);
			this.mInflater = LayoutInflater.from(context);
		}

		public View getView(int position, View convertView, ViewGroup parent) {
			final CheckBoxViewHolder holder;
			if (convertView == null) {
				convertView = this.mInflater.inflate(android.R.layout.simple_list_item_multiple_choice,
								null);
				holder = new CheckBoxViewHolder();
				holder.text1 = (CheckedTextView) convertView.findViewById(android.R.id.text1);
				// set the CheckedTextView to SingleLine
				holder.text1.setSingleLine(true);
				holder.text1.setEllipsize(android.text.TextUtils.TruncateAt.valueOf("END"));
	                        //set CheckedTextView paddings
                                holder.text1.setPadding(10, 20, 10, 20);
			} else {
				holder = (CheckBoxViewHolder) convertView.getTag();
			}
			return super.getView(position, convertView, parent);
		}
	}
    class CheckBoxViewHolder{
    	CheckedTextView text1;
    }
这样,使用自定义的adapter就可以更改拥有一定功能的公用的adapter呈现出我们需要的View。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值