android 相关小计

本文介绍在Android应用中如何实现ExpandableListView的单选功能,包括设置监听器来控制选择状态,并展示了如何使用CheckedTextView替代普通TextView以实现更直观的选中效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.android 扫描二维码时。viewfinderview 与surpreview 都不需要设置背景,不然容易将其他图片引入


2.ExpandableListView 的单选

mExpandableListView.setOnGroupClickListener(new OnGroupClickListener() {

			@Override
			public boolean onGroupClick(ExpandableListView parent, View v,
					int groupPosition, long id) {
				
				final int position = parent.getFlatListPosition(ExpandableListView.getPackedPositionForGroup(groupPosition));  
			    parent.setItemChecked(position, true);
				
				return true;
			}
		});
		mExpandableListView.setOnChildClickListener(new OnChildClickListener() {

			@Override
			public boolean onChildClick(ExpandableListView parent, View v,
					int groupPosition, int childPosition, long id) {
				final int position = parent.getFlatListPosition(ExpandableListView.getPackedPositionForChild(groupPosition, childPosition));  
			    parent.setItemChecked(position, true);
				
				return true;
			}
		});
@Override
		public View getGroupView(int groupPosition, boolean isExpanded,
				View convertView, ViewGroup parent) {
			ParentViewHolder mHolder = null;
			if (convertView == null) {
				mHolder = new ParentViewHolder();
				
				//convertView = mInflater.inflate(R.layout.adapter_postbuying_selectcategory_parent_item,null);
				//mHolder.mTextView = (TextView) convertView.findViewById(R.id.txtnote);
				//mHolder.mImageView = (ImageView) convertView.findViewById(R.id.imgarrow);
				
				convertView=mInflater.inflate(R.layout.adapter_postbuying_selectcategory_parent_item_check, null);
				mHolder.mCheckedTextView=(CheckedTextView) convertView.findViewById(android.R.id.text1);
				convertView.setTag(mHolder);
			} else {
				mHolder = (ParentViewHolder) convertView.getTag();
			}
			
			//mHolder.mTextView.setText(getGroup(groupPosition).getCategory());
			//mHolder.mImageView.setVisibility(sumCategoryList.get(groupPosition).size() < 1 ? View.INVISIBLE : View.VISIBLE);
			//if (mHolder.mImageView.getVisibility() == View.VISIBLE) {
			//	if (isExpanded) {
			//		mHolder.mImageView.setImageResource(R.drawable.adapter_item_tip_down);
			//	} else {
			//		mHolder.mImageView.setImageResource(R.drawable.adapter_item_tip_up);
			//	}
			//}
			mHolder.mCheckedTextView.setText(getGroup(groupPosition).getCategory());
			
			final int position = ((ExpandableListView)parent).getFlatListPosition(ExpandableListView.getPackedPositionForGroup(groupPosition));  
			mHolder.mCheckedTextView.setChecked(((ExpandableListView)parent).isItemChecked(position));
			
			mHolder.mCheckedTextView.setCompoundDrawables(null, null, sumCategoryList.get(groupPosition).size() < 1 ? null :getResources().getDrawable(R.drawable.adapter_item_tip_down),null);
			if(mHolder.mCheckedTextView.getCompoundDrawables()[2]!=null){
				if (isExpanded) {
					mHolder.mCheckedTextView.setCompoundDrawables(null, null, sumCategoryList.get(groupPosition).size() < 1 ? null :getResources().getDrawable(R.drawable.adapter_item_tip_down),null);
				} else {
					mHolder.mCheckedTextView.setCompoundDrawables(null, null, sumCategoryList.get(groupPosition).size() < 1 ? null :getResources().getDrawable(R.drawable.adapter_item_tip_up),null);
				}
			}
			mHolder.mCheckedTextView.setCheckMarkDrawable(R.drawable.listviewitemcheckstylebg);
			return convertView;
		}

@Override
		public View getChildView(int groupPosition, int childPosition,
				boolean isLastChild, View convertView, ViewGroup parent) {
			ChildViewHolder mHolder = null;
			if (convertView == null) {
				mHolder = new ChildViewHolder();
				//convertView = mInflater.inflate(R.layout.adapter_postbuying_selectcategory_child_item,null);
				//mHolder.mTextView = (TextView) convertView.findViewById(R.id.txtNote);
				convertView=mInflater.inflate(R.layout.simple_list_item_checked, null);
				mHolder.mCheckedTextView=(CheckedTextView) convertView.findViewById(android.R.id.text1);
				convertView.setTag(mHolder);
			} else {
				mHolder = (ChildViewHolder) convertView.getTag();
			}
			//mHolder.mTextView.setText(getChild(groupPosition, childPosition).getCategory());
			mHolder.mCheckedTextView.setText(getChild(groupPosition, childPosition).getCategory());
			
			
			final int position = ((ExpandableListView)parent).getFlatListPosition(ExpandableListView.getPackedPositionForChild(groupPosition, childPosition));  
		    mHolder.mCheckedTextView.setChecked(((ExpandableListView)parent).isItemChecked(position));
		    
			mHolder.mCheckedTextView.setCheckMarkDrawable(R.drawable.listviewitemcheckstylebg);
			return convertView;
		}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值