Android:View类中getTag()和setTag()的用途

public void setTag(final Object tag) {
                mTag = tag;
}
public Object getTag() {
            return mTag;
}

这些是Android中View Class的两种方法.
以下是这两种方法的官方文档.

/**
     * Returns this view's tag.
     *
     * @return the Object stored in this view as a tag
     *
     * @see #setTag(Object)
     * @see #getTag(int)


        */
 /**
     * Sets the tag associated with this view. A tag can be used to mark
     * a view in its hierarchy and does not have to be unique within the
     * hierarchy. Tags can also be used to store data within a view without
     * resorting to another data structure.
     *
     * @param tag an Object to tag the view with
     *
     * @see #getTag()
     * @see #setTag(int,Object)
     */

标记函数广泛用于baseadapter实现,但我无法理解它的用途以及如何使用它们.能否请您解释一下这个好例子,以帮助我理解这些功能的作用

解决方法

可以把它想象成尽可能简单 – 一个标签”.

杂货店产品标签告诉你什么?
基本上很多东西,比如名字,价格,原产国,折扣等等.

想象一下,您正在使用ImageView制作一个在网格中显示此类产品的应用程序.
如何从ImageView轻松确定产品功能标记它是可能的解决方案之一.

class Product {

    String mName;
    String mManufacturer;
    String mOriginCountry;

    double mPrice;
    int mdiscount;

    int mImageId; // A reference to a drawable item id
}

[...]

class My Activity {

    @Override
    protected void onCreate() {
        [...] // Some code

        // Grab the imageView reference and grab (or create) the tag for it
        ImageView someItemView = (ImageView) findViewById(R.id.some_product_view);
        Product someProductTag = new Product( ... some data ...);

        // Add the tag to the ImageView
        someItemView.addTag(someProductTag);
    }

    private void displayItemInfo(ImageView iv) {

        // Grab the tag and display the info.
        String productName = ((Product)iv.getTag()).mName();
        Toast.show(mContext,"This is " + productName,Toast.LONG).show(); 

    }

}

当然这非常简单.理想情况下,您将拥有一个适配器,可以根据您提供的标签创建视图,或者自动创建标签.

我希望你明白这个主意

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...