首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

OnClickListener:为什么我不能在ArrayAdapter中访问对象的公共方法?有什么解决方法吗?

在ArrayAdapter中无法直接访问对象的公共方法是因为ArrayAdapter是一个通用的适配器,它的目的是将数据集合中的每个对象转换为视图展示在界面上。因此,ArrayAdapter只能访问对象的公共属性,而不能直接访问对象的公共方法。

解决这个问题的方法是创建一个自定义的适配器,继承自ArrayAdapter,并重写getView方法。在getView方法中,可以通过getItem方法获取到数据集合中的每个对象,然后可以直接访问对象的公共方法。

以下是一个示例代码:

代码语言:java
复制
public class CustomAdapter extends ArrayAdapter<MyObject> {
    public CustomAdapter(Context context, List<MyObject> objects) {
        super(context, 0, objects);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // 获取当前位置的对象
        MyObject myObject = getItem(position);

        // 访问对象的公共方法
        myObject.publicMethod();

        // 其他自定义的逻辑

        return convertView;
    }
}

在使用自定义适配器时,可以将数据集合传递给适配器的构造方法,并将适配器设置给ListView或RecyclerView等控件。

这样,就可以在自定义适配器中访问对象的公共方法了。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Kotlin入门(20)几种常见对话框

大家好,又见面了,是你们朋友全栈君。...> arg0) {} } 不出所料这再次体现了Java编码尾大不掉,简简单单能在Java代码中被分解为以下几个专门处理: 1、首先要定义一个数组适配器ArrayAdapter,指定待选择字符串数组...、数组适配器、选择监听器、默认选项等等; 天,这也太专业了吧,在产品经理看来,这只是个下拉框而已,必要搞这么复杂?...认真阅读Anko库里面的selector源码,发现原来该函数利用了AlertDialogsetItems方法,通过setItems方法指定一串文本,并且定义了每项点击事件,其运行结果竟然与Spinner...编码,看起来十分矩,可是仍然显得拖泥带水,很简单功能也花费了六行Java代码。

1.6K10

Kotlin入门(20)几种常见对话框

> arg0) {}     } 不出所料这再次体现了Java编码尾大不掉,简简单单能在Java代码中被分解为以下几个专门处理: 1、首先要定义一个数组适配器ArrayAdapter,指定待选择字符串数组...、数组适配器、选择监听器、默认选项等等; 天,这也太专业了吧,在产品经理看来,这只是个下拉框而已,必要搞这么复杂?...然而Java代码就是这么错综复杂,要想开发Android,只能这么捣腾,不然还有更好法子?不信的话换成Kotlin试试?...认真阅读Anko库里面的selector源码,发现原来该函数利用了AlertDialogsetItems方法,通过setItems方法指定一串文本,并且定义了每项点击事件,其运行结果竟然与Spinner...编码,看起来十分矩,可是仍然显得拖泥带水,很简单功能也花费了六行Java代码。

2.7K30

Fragment基本使用

如果要获取Activity对象建议调用getActivity(),而是在onAttach()中将Context对象强转为Activity对象 示例: public class Fragment1 extends...Fragment与Activity通信交互如上图所示: 如果Activity包含自己管理Fragment引用,可以通过引用直接访问所有的Fragmentpublic方法 如果Activity未保存任何...调用getArguments()获得Bundle对象,然后进行解析就可以 简单示例: //创建Fragment对象,并通过Bundle对象传递值(在onCreate方法) MyFragment fragment...简单示例: 首先在Fragment定义一个接口(定义抽象方法,传什么类型参数) /*接口*/ public interface Mylistener{ public void thanks...交互 这种情况方法解决: 方法一:直接在Activity操作 ​ 直接在Activity中找到对应控件实例,然后直接操控即可 方法二:直接在Fragment操作 ​ 这里两个问题:如何获取自己控件引用

1.9K30

Java 基础巩固:内部类字节码学习和实战使用场景

,编译器为我们生成了一个参数为外部类对象构造方法,这也解释了内部类为什么可以直接访问外部类内容,因为持有外部类引用!...、内部类、方法中有重名变量/方法,编译器会把方法中直接访问变量名称修改为方法名称 如果想在方法强制访问内部类成员变量/方法,可以使用 this.i,这里 this 表示当前内部类对象 如果想在方法强制访问外部类成员变量...但是一个限制是:成员内部类不能创建静态变量/方法。如果我们尝试创建,编译器会直接 say no。 为什么会这样呢?...它和成员内部类区别就是:局部内部类作用域只能在其所在代码块或者方法内,在其它地方是无法创建该类对象。...记得有一年去点评面试,面试官让写个静态内部类实现单例模式,过程不确定静态内部类是否可以静态成员,基础多差可想而知。

1.3K100

AndroidContentProvider用法

首先,如果要访问一个应用程序通过ContentProvider共享数据,一定要借助ContentResolver类,我们可以通过Context类getContentResolver()方法获取ContentResolver...ContentResolver对象,并且调用query方法, * 传入联系人Uri,来查询联系人信息,类似于数据库查询方法。...这个方法 首先调用了ContentResolver类query方法并且传入储存联系人信息那张数据表Uri,用于查询联系人信息那张数据表数据,之后对查询返回结果Cursor进行处理,将储存联系人信息...ArrayList对象数据清空,并且将Cursor对象中储存数据提取到ArrayList对象, 之后调用适配器adapter.notifyDataSetChanged...在这里,如果你用是模拟器,并且模拟器没有联系人的话要添加几个联系人。不然就显示是空界面。这个需要注意一下 如果博客中有什么不正确地方,还请多多指点。 谢谢观看。。。

2K10

Andriod基础——Adapter类

下面的列表显示了两个最有用和最通用本地Adapter:  ❑ ArrayAdapter  ArrayAdapter是一个绑定View到一组对象通用类。...默认情况下,ArrayAdapter绑定每个对象toString值到在layout预先定义TextView控件上。...添加按钮首先要写一个按钮xml文件,然后自然会想到用上面的方法定义一个适配器,然后将数据映射到布局文件上。...,listView在开始绘制时候,系统首先调用getCount()函数,根据他返回值得到listView长度(这也是为什么在开始第一张图特别的标出列表长度),然后根据这个长度,调用getView...getView()三个参数,position表示将显示是第几行,covertView是从布局文件inflate来布局。

1.7K50

【码上开学】Kotlin 高阶函数、匿名函数和 Lambda 表达式

比如我在 a 内部一处对别的方法调用,这个方法可能是 b,可能是 c,不一定是谁,只知道,在这里一个调用,它参数类型是 int ,返回值类型也是 int ,而具体在 a 执行时候内部调用哪个方法...那既然都是一个东西,为什么直接写函数名,而要加两个冒号呢? 因为加了两个冒号,这个函数才变成了一个对象什么意思?...对象是不能加个括号来调用,对吧?但是函数类型对象可以。为什么?...不过我们先停下想一想:这个 Lambda 这也写那也……它不迷茫?它是怎么知道自己参数类型和返回值类型? 靠上下文推断。调用函数在声明地方明确参数信息吧?...但是我们刚才也说过了函数是不能作为参数传递,也不能赋值给变量,对吧? 那为什么匿名函数就这么特殊呢? 因为 Kotlin 匿名函数——是——函——数。它是个对象

2.1K20

那个男人再发力,原来以前学 Lambda 都是假

比如我在 a 内部一处对别的方法调用,这个方法可能是 b,可能是 c,不一定是谁,只知道,在这里一个调用,它参数类型是 int ,返回值类型也是 int ,而具体在 a 执行时候内部调用哪个方法...那既然都是一个东西,为什么直接写函数名,而要加两个冒号呢? 因为加了两个冒号,这个函数才变成了一个对象什么意思?...对象是不能加个括号来调用,对吧?但是函数类型对象可以。为什么?...不过我们先停下想一想:这个 Lambda 这也写那也……它不迷茫?它是怎么知道自己参数类型和返回值类型? 靠上下文推断。调用函数在声明地方明确参数信息吧?...但是我们刚才也说过了函数是不能作为参数传递,也不能赋值给变量,对吧? 那为什么匿名函数就这么特殊呢? 因为 Kotlin 匿名函数——是——函——数。它是个对象

64820

Adrnoid开发系列(二十五):使用AlertDialog创建各种类型对话框

大家好,又见面了,是全栈君。 AlertDialog能够生成各种内容对话框。可是每种对话框都会有这样结构: 类似下边这样: 这仅仅是最简单对话框。...我们来看下创建一个对话框须要步骤: 1、使用创建AlertDialog.Builder对象 2、调用AlertDialog.BuildersetTitle()或setCustomTitle()方法设置标题...3、调用AlertDialog.BuildersetIcon()方法设置图标 4、调用一些其它设置方法设置标题 5、调用AlertDialog.BuildersetPositiveButton()...、setNegativeButton()或者setNeutralButton()加入多个button 6、调用create()方法创建AlertDialog对象,再调用AlertDialog对象show...不做不论什么事情。

70220

2.ui

,作为ListView条目 //position:本次getView方法调用所返回View对象,在listView是处于第几个条目,那么position值就是多少 @Override public...虽然现在已经不会再重复去加载布局,但是每次在getView()方法还是会调用ViewfindViewById()方法来获取一次控件实例。...return v; ArrayAdapter 它可以通过泛型来指定要适配数据类型, 然后在构造函数把要适配数据传入即可。。...ArrayAdapter多个构造函数重载,根据实际情况选择最合适一种。...ListView注册了一个监听器,当用户点击了 ListView任何一个子项时就会回调 onItemClick()方法, 在这个方法可以通过 position参数判断出用户点击是哪一个子项,然后获取到相应水果

1.6K90

C#简单面试题目(一)

protected:保护成员,该类内部和继承类可以访问。   public:公共成员,完全公开,没有访问限制。   internal:在同一个程序集内可以访问....而在接口中加入新方法,那么实现它类就要重新编写(这就是为什么说接口是一个类规范了)。...接口成员被定义为公共,但抽象类成员也可以是私有的、受保护、内部、或受保护内部成员(其中受保护内部成员只能在应用程序代码或派生类访问)。...当这个类包含抽象方法时,或是该类并没有完全实现父类抽象方法时。 13.为什么不能指定接口中方法修饰符?   接口中方法用来定义对象之间通信契约,指定接口中方法为私有或保护没有意义。...他们默认为共有方法。 14.如果接口中存在重复方法名称该如何?   这种情况你可以决定如何实现,当然需要特别的小心。但是在编译环节是没有问题。 15.C#接口和类什么异同。

96230

android学习笔记----ListView和各种适配器简介

我们现在分析如果第三个参数为true时为什么出错。...我们可以创建一个 ArrayAdapter 对象实例并用在我们应用,因为我们已经验证了 ArrayAdapter 是个 ListAdapter,我们可以将 ArrayAdapter 对象作为listView.setAdapter...你看过 Android 下拉菜单?在 Android ,这些叫做 Spinner,你猜怎么着?...当convertView为null时候,创建一个ViewHolder对象,并将控件实例都存放在ViewHolder里,然后调用ViewsetTag方法,将ViewHolder对象存储在View,...这里一定要写view.findViewById,因为findViewById是上下文,默认是在Activity主布局,我们获取子布局是view 如果写view.findViewById而直接写

2.1K10

Android MVP 模式介绍与实战

1.什么是MVP? Model: 业务逻辑和实体模型 View:用户交互和视图显示,在android对应activity Presenter: 负责完成View于Model间逻辑和交互 ?...2.为什么要用MVP? 通常我们都用MVC。但是原有的MVC模式一些短板。...比如在android开发,activity充当着MVCController角色,但是在实际开发还需要处理view逻辑(既担任V,又担任C)。当业务界面复杂时activity会显得很庞大。...于是出现了MVP模式,它新增了一个Presenter角色用于处理数据和界面的模型以及逻辑,Activity仅仅用于展示界面和用户交互,这样就解决了MVC角色不清局面。...所以,MVP与MVC重大区别:在MVPView并不直接使用Model,它们之间通信是通过Presenter (MVCController)来进行,所有的交互都发生在Presenter内部。

84610

详解 Java 内部类

= new OnClickListener() { // 可以在内部类定义属性,但是只能在当前内部类中使用, // 无法在外部类中使用,因为外部类无法获取当前匿名内部类类名, // 也就无法创建匿名内部类对象...最后在外部类构造方法定义了一个方法内变量赋值为内部类 private 权限字段。...而且因为外部类对象需要访问当前类私有成员,编译器给这个静态内部类生成了一个名为 access000 静态方法,作用已不用多说了。...好了,关于 Java 内部类介绍就到这里了,通过这篇文章相信你对 Java 内部类已经了一个比较深入理解。 如果博客中有什么不正确地方,还请多多指点。...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。如发现本站涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

94110

Java内部类详解

这一点和外部类一点不一样,外部类只能被public和包访问两种权限修饰。个人是这么理解,由于成员内部类看起来像是外部类一个成员,所以可以像类成员一样拥有多种权限修饰。   ...2.为什么局部内部类和匿名内部类只能访问局部final变量?   ...但是新问题又来了,既然在run方法访问变量a和test方法变量a不是同一个变量,当在run方法改变变量a值的话,会出现什么情况?   ...到这里,想必大家应该清楚为何 方法局部变量和形参都必须用final进行限定了。   3.静态内部类特殊地方?   ...三.内部类使用场景和好处   为什么在Java需要内部类?

43510
领券