android tag 筛选,Android:Tag的妙用

本文探讨了Android View Tag的灵活使用,如何利用Tag实现类似Python、C#中方法返回值的传递,尤其是在Java中通过Tag避免定义数组,提升效率。特别提及了在MotionEvent中引入Tag的设想,突显了Tag在简化编程中的实用价值。

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

Android 的 View 可有各种Tag。

不禁令人联想到Unreal、Unity中物体的标签。

Tag不限定类型,可自由发挥

最常见的作用就是 listview 中用 Tag 保存 view holder

也有用 Tag 保存位置的,但是位置不妨放在 view holder 中

毕竟,带 Id 的 Tag 是有额外开销的,建议一个 view 只用一个最简单的 Tag

带 Id 的 Tag 可以在开发过程中使用,快速搭建功能

Tag的妙用 :

可以用来……传值!

是的,没错,可以用来传递方法的返回结果。

在 Python、c# 可以像这样接收方法的多个返回值:

(string first, string last) = LookupName(id1);

羡慕吗?羡慕也没用……

在 Java 的世界,通常要定义数组来接受多个返回值

但是!借助Tag,可以这样:

View dialogView = buildStandardSettingsDialog(...); //bSSD

Dialog dialog = (Dialog) dialogView.getTag();

dialogView.setTag(null);

......

要是 MotionEvent 也有 Tag 就好了

Tag的使用 package com.yarin.android.qiehuan; import android.app.AlertDialog; import android.app.Dialog; import android.app.TabActivity; import android.content.DialogInterface; import android.graphics.Color; import android.os.Bundle; import android.widget.TabHost; import android.widget.TabHost.OnTabChangeListener; public class Activity01 extends TabActivity { //声明TabHost对象 TabHost mTabHost; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //取得TabHost对象 mTabHost = getTabHost(); /* 为TabHost添加标签 */ //新建一个newTabSpec(newTabSpec) //设置其标签和图标(setIndicator) //设置内容(setContent) mTabHost.addTab(mTabHost.newTabSpec("test1") .setIndicator("TAB 1",getResources().getDrawable(R.drawable.img1)) .setContent(R.id.textview1)); mTabHost.addTab(mTabHost.newTabSpec("test2") .setIndicator("TAB 2",getResources().getDrawable(R.drawable.img2)) .setContent(R.id.textview2)); mTabHost.addTab(mTabHost.newTabSpec("test3") .setIndicator("TAB 3",getResources().getDrawable(R.drawable.img3)) .setContent(R.id.textview3)); //设置TabHost的背景颜色 mTabHost.setBackgroundColor(Color.argb(150, 22, 70, 150)); //设置TabHost的背景图片资源 //mTabHost.setBackgroundResource(R.drawable.bg0); //设置当前显示哪一个标签 mTabHost.setCurrentTab(0); //标签切换事件处理,setOnTabChangedListener mTabHost.setOnTabChangedListener(new OnTabChangeListener() { // TODO Auto-generated method stub @Override public void onTabChanged(String tabId) { Dialog dialog = new AlertDialog.Builder(Activity01.this) .setTitle("善谢谢提醒") .setMessage("现在选中了:"+tabId+"标签") .setPositiveButton("确定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { dialog.cancel(); } }).create();//创建按钮 dialog.show(); } }); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值