草庐IT

Android setOnItemClickListener 与 setOnClickListener

coder 2023-12-20 原文

据我所知,有两种方法可以处理对不同列表项的点击:

  1. 使用 setTag() 为 Adapter 中的列表项设置类型,然后使用 setOnItemClickListener() 为列表和 getTag()区分类型的 View ,如下所示:

listview.setOnItemClickListener(new OnItemClcikListener(){});

  1. 在适配器内部,setOnClickListener()getView() 期间分别为每个项目设置,如下所示:

item.setOnClickListener(new OnClickListener() {});

有什么区别,首选哪个?

最佳答案

OnClickListener 相比,

OnItemClickListener 非常易于管理。 如果您仍然愿意管理 OnClickListener,我会告诉您为什么 OnItemClickListenerOnClickListener 好得多。

一旦您开始滚动 ListView 项目将开始被重用,您最终会创建大量的 OnClickListener。别担心,这不是内存泄漏,因为 GC 会出现并收集它们,但您也不应该感到安全,因为 GC 会暂停您的 Activity ,即使它是相当大的几分之一秒。

我也会选择 OnItemClickListener 除非您为单个列表项计划了不同的东西。

如果您需要为每个项目创建可点击的特定部分,或者希望对给定项目执行多个操作,最好将这些操作收集到一个创建一次的 OnClickListener 中附加到 getView() 中的每个项目。您可以通过附加有关点击操作的元数据来区分点击了哪个项目,并可能使用 setTag() 将位置列到 View 本身。

关于Android setOnItemClickListener 与 setOnClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28295197/

有关Android setOnItemClickListener 与 setOnClickListener的更多相关文章

  1. android - setOnClickListeners 用于动态创建的复选框 - 2

    我在尝试在我的应用程序中创建动态复选框时遇到问题。设计工作正常,我可以根据需要创建任意数量的复选框。复选框与TextView一起放入TableRow中,以便文本位于复选框的左侧。但我的问题是,在我的Activity中,我可以获得复选框的“状态”,无论它是否被选中。我使用充气机来创建我的复选框。复选框的xml:我调用的函数来创建一个包含TextView和复选框的新表格行:publicvoidlayoutMakeSpeakerEffect(StringeffectName,inteffectNumber){LayoutInflaterlinflater=(LayoutInflater)ge

  2. java - 安卓Java : Using setOnClickListener in for loop - 2

    我正处于android开发的早期阶段,我遇到了for的问题循环。这是我的代码:for(inti=0;i我有TableRows和两个textViews在每个TableRows.当我点击第一个textView1[i],第二个,textView2[i]将不可见或可见。但是在setOnClickListener我的代码块“从内部类中访问变量‘i’需要声明为最终”错误代码。我已经声明了i作为final,比如for(finalinti=0;i.然后我有一个不同的错误。“变量‘i’不能声明为最终的” 最佳答案 声明一个新变量j并将您的代码修改为:

  3. android - edittext setOnclicklistener android - 2

    我有一个listview,上面有edittext。edittext正在从ListView中搜索数据。ListView由字符串数组填充。edittext搜索功能工作正常,但onclick不工作。它应该去另一个传递一些Intent的Activity。我怎样才能做到这一点?我正在使用这种方法。它是否正确?如何传递Intent?editText.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){}});谢谢 最佳答案 如果您在布局xml文件中将

  4. Android setOnItemClickListener 与 setOnClickListener - 2

    据我所知,有两种方法可以处理对不同列表项的点击:使用setTag()为Adapter中的列表项设置类型,然后使用setOnItemClickListener()为列表和getTag()区分类型的View,如下所示:listview.setOnItemClickListener(newOnItemClcikListener(){});在适配器内部,setOnClickListener()在getView()期间分别为每个项目设置,如下所示:item.setOnClickListener(newOnClickListener(){});有什么区别,首选哪个? 最

  5. java - 调用 setOnClickListener 时传递参数? - 2

    是否可以在单击按钮时将参数传递给监听器:protectedvoidonCreate(BundlesavedInstanceState){....StringmyArg="Hello";Buttonbutton1=(Button)findViewById(R.id.myButton);button1.setOnClickListener(myListener);StringmyArg="Goodye";Buttonbutton2=(Button)findViewById(R.id.myOtherButton);button2.setOnClickListener(myListener);

  6. android - listview.setOnItemClickListener 和 row.setOnClickListener 的区别 - 2

    我正在创建一个自定义数组适配器,我现在想实现一个处理点击View的函数。我有两个选择,但我想知道性能/工作速度或其他方面是否存在差异?选项1,在arrayAdapter本身中:row.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){//TODOAuto-generatedmethodstub}});选项2,来自主Activity:listView.setAdapter(adapter);listView.setOnItemClickListener(newOnItemClickListe

  7. android - 按钮 setOnClickListener() 与 android :onclick - 2

    为了注册一个OnClickListener,我总是在Button上调用setOnClickListener(listener)。现在我看到了一段代码,其中通过使用android:onclick="nameOfMethod"并使用View参数实现该方法,在布局中定义了点击事件。这两种添加OnClickListener的方式有区别吗?推荐哪一个? 最佳答案 在XML中绑定(bind)函数的onClick是onClick和它调用的函数之间的绑定(bind)。为了使onClick起作用,该函数将只有一个参数。OnClickListener是

  8. android - 为什么我不允许在这种情况下使用 setOnClickListener? - 2

    这毫无意义,我收到一条错误消息,指出无法将setOnClickListener应用于MainActivity。但我做过其他项目,但我从未遇到过这个问题。怎么回事?publicclassMainActivityextendsActionBarActivity{Buttonbutton;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button=((Button)findVie

  9. android - setOnClickListener 在 Android WebView 上没有响应 - 2

    我有包含TextView的AndroidLisView来显示列表中的数据,我添加将其更改为Webview,之后一切看起来都很好,除了setOnClickListener不再响应......我已经阅读了有关Webview的信息,发现不支持setOnClickListener,而是支持setOnTouchListener在AndroidWebView中使用与setOnClickListener相同功能的方法?像这样:myWebView.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){//do

  10. java - 在 setOnClickListener 中获取 Activity (this) - 2

    我是java和android开发的新手,我有一个问题,让我解释一下。我有自定义接口(interface)和自定义类,它们将其用作监听器。在我的HomeActivity中,我在我的自定义类上调用方法,该类通过监听器(接口(interface))响应,这是简短版本:publicclassHomeActivityextendsActivityimplementsWebClientResponseListener{privateUseruser;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){//....//Icallmycla

随机推荐