简体   繁体   English

ListItem没有响应Android中ArrayAdapter中的clickEvents?

[英]ListItem not responding to clickEvents in ArrayAdapter in Android?

"I was trying to create Toast message when user clicks on Description TextView and Like ImageButton. But the list_item is not responding to touch Events " “当用户点击Description TextView和Like ImageButton时,我试图创建Toast消息。但list_item没有响应触摸事件”

"I went through many other people answering about changing focus.But none of them are working" “我经过许多其他人回答关于改变焦点。但他们都没有工作”

        EventsListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                final EventsObject mEventsObject = mEventsAdapter.getItem(position);
                final String mEventUrl = mEventsObject.geteLink();
                Log.e(TAG, "Inside ListVIew");
                final boolean status = mEventsObject.hasLiked();
                //LikeButton likeButton = view.findViewById(R.id.heart_button);
                TextView description = view.findViewById(R.id.eventDesc);
                //final TextView likesCountTextView = view.findViewById(R.id.likesCount);
                Toast.makeText(MainActivity.this, "Liked", Toast.LENGTH_SHORT).show();
                description.setFocusable(false);
                description.setFocusableInTouchMode(false);
                description.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (!TextUtils.isEmpty(mEventUrl)) {
                            Intent openLinkInBrowser = new Intent(Intent.ACTION_VIEW);
                            openLinkInBrowser.setData(Uri.parse(mEventUrl));
                            startActivity(openLinkInBrowser);
                        } else {
                            Toast.makeText(MainActivity.this, "Links are not provided", Toast.LENGTH_SHORT).show();
                        }
                    }
                });
                Button loveBtn = view.findViewById(R.id.loveButton);
                loveBtn.setFocusable(false);
                loveBtn.setFocusableInTouchMode(false);
                loveBtn.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (status) {
                            Toast.makeText(MainActivity.this, "Liked", Toast.LENGTH_SHORT).show();
                            mEventsObject.setHeartLiked(true);
                        } else {
                            Toast.makeText(MainActivity.this, "Disliked", Toast.LENGTH_SHORT).show();
                            mEventsObject.setHeartLiked(false);
                        }
                    }
                });

            }

XML for list_item is list_item的XML是

?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="8dp"
    android:orientation="vertical"

    >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:layout_marginBottom="8dp"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/organiser"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:paddingLeft="16dp"
            android:textAllCaps="true"
            android:textColor="#ffffff"
            android:textSize="16sp"
            android:textStyle="bold"
            tools:text="Organiser" />

        <TextView
            android:id="@+id/dateOfEvent"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="right"
            android:textColor="#ffffff"
            android:textStyle="bold"
            tools:text="12/03/20" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/organiserImage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/events_circle"
            android:padding="16dp"
            android:src="@mipmap/ic_launcher"
            android:textColor="#ffffff" />

        <TextView
            android:id="@+id/eventDesc"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="4dp"
            android:gravity="fill"
            android:textColor="#ffffff"
            android:textSize="16sp"
            tools:text="@string/test_event_desc" />
    </LinearLayout>

    <ImageButton
        android:id="@+id/loveButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginBottom="8dp"
        android:background="@drawable/events_love"

        android:scaleType="center"
        android:src="@drawable/love" />
    <!--
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_marginTop="0dp">

            <com.like.LikeButton
                app:icon_type="heart"
                app:icon_size="18dp"
                android:id="@+id/heart_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                app:circle_start_color="#ff2134"
                app:circle_end_color="#000000"

                />
    -->
    <!--<TextView
        android:id="@+id/likesCount"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        tools:text="10"
        android:textColor="#ffffff"/>
</LinearLayout>-->

</LinearLayout>

"I would like to have list_item's responding to click events and showing toast message.. Please Help.. THanks in Advance !!" “我想让list_item响应点击事件并显示toast信息..请帮助..提前谢谢!”

It may be because you are trying to perform click inside item click listener of ListView. 这可能是因为您尝试在ListView的项目单击侦听器中执行单击。

You can fix it by creating a custom adapter for listview. 您可以通过为listview创建自定义适配器来修复它。 Customer ListView Adapter 客户ListView适配器

After creating this custom adapter you can get the reference of description and loveBtn and perform click operation on this. 创建此自定义适配器后,您可以获取descriptionloveBtn的引用,并loveBtn执行单击操作。

Your adapter's getView() code will be like this- 你的适配器的getView()代码将是这样的 -

   @Override
   public View getView(int position, View convertView, ViewGroup parent) {
      if(convertView==null) {
         LayoutInflater layoutInflater = LayoutInflater.from(context);
         convertView=layoutInflater.inflate(R.layout.list_row, null);

         TextView description=convertView.findViewById(R.id.eventDesc);
         Button loveBtn=convertView.findViewById(R.id.loveButton);

      }

         description.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (!TextUtils.isEmpty(mEventUrl)) {
                        Intent openLinkInBrowser = new Intent(Intent.ACTION_VIEW);
                        openLinkInBrowser.setData(Uri.parse(mEventUrl));
                        startActivity(openLinkInBrowser);
                    } else {
                        Toast.makeText(MainActivity.this, "Links are not provided", Toast.LENGTH_SHORT).show();
                    }
                }
            });

           loveBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (status) {
                        Toast.makeText(MainActivity.this, "Liked", Toast.LENGTH_SHORT).show();
                        mEventsObject.setHeartLiked(true);
                    } else {
                        Toast.makeText(MainActivity.this, "Disliked", Toast.LENGTH_SHORT).show();
                        mEventsObject.setHeartLiked(false);
                    }
                }
            });

      return convertView;
   }

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM