简体   繁体   English

Android:如何在列表视图中为动态创建的项目设置侦听器

[英]Android: How to set listeners for dynamically created items in a list view

I have list view that populated its items based on a list of names. 我有一个基于名称列表填充其项目的列表视图。 I've added an adapter to the list view and set items. 我已经将适配器添加到列表视图并设置了项目。 Here's the code: 这是代码:

    items = new String[]{ "Apple", "Banana" };
    list = (ListView)findViewById(R.id.fruits_listView);

    list.setAdapter(new ArrayAdapter<String>(this, R.layout.list_fruits, R.id.list_fruits_textView, items) {

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            View v = super.getView(position, convertView, parent);
            ImageView imageView = (ImageView)v.findViewById(R.id.list_fruits_imageView);

            // Change icon based on name and set click listener for it
            String s = items[position];

            if (s.equals("Apple"))
            {
                imageView.setImageResource(R.drawable.apple);
                imageView.setOnClickListener(appleListener);
            }
            else if (s.equals("Banana"))
            {
                imageView.setImageResource(R.drawable.banana);
                imageView.setOnClickListener(bananaListener);
            }

            return v;
        }
    });

    // Setup listeners
    appleListener = new OnClickListener() {

        @Override
        public void onClick(View v) {
            startActivity(new Intent(this, Apple.class));
        }
    };

    bananaListener = new OnClickListener() {

        @Override
        public void onClick(View v) {
            startActivity(new Intent(this, Banana.class));
        }
    };

However when I click the list items nothing happens, seems listeners don't work. 但是,当我单击列表项时,没有任何反应,似乎听众无法正常工作。 Any idea what my problem is? 知道我的问题是什么吗?

It's simple, just initialize your listeners before setting the adapters. 很简单,只需在设置适配器之前初始化侦听器即可。
I hope this solves your problem. 我希望这能解决您的问题。

EDIT: 编辑:
Set these properties in your ListView 在您的ListView设置这些属性

android:focusable="false"
android:focusableInTouchMode="false"
android:descendantFocusability="blocksDescendants" 

Also make your ImageView(s) clickable: 同时使您的ImageView(s)可点击:

yourImageViewObject.setClickable(true);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在Android上为列表视图项目设置图标 - How to set icons for a list view items on android 从 Android 视图中删除动态创建的项目 - Remove dynamically created Items from view in Android 如何根据Android中的数据库值动态设置列表视图中所有项目的文本大小? - How to dynamically set text size of all items in a list view based on database value in Android? 为动态创建的图像视图设置单击侦听器 - set click listeners for dynamically created imageviews 如何为列表适配器的每个条目具有另一组列表项的列表适配器动态创建视图? - How to dynamically create views for list adapter with each item of the list view having another set of list items? 如何将背景颜色设置为动态创建的视图? - How to set background color to a dynamically created view? android-如何为动态创建的片段设置标签 - android - how to set a TAG for a dynamically created fragment 如何在Android中动态更改ListView的列表项? - How to dynamically change List items for the ListView in Android? 动态获取的适配器列表视图中的Android getText - Android getText from dynamically created adapter list view 使用Android应用程序的自定义适配器动态添加项目到列表视图 - Dynamically add items to list view using custom adapter for Android app
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM