0

"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 "

"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

?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 !!"

Vadim Kotov
  • 8,084
  • 8
  • 48
  • 62
Sarat
  • 3
  • 3

1 Answers1

0

It may be because you are trying to perform click inside item click listener of ListView.

You can fix it by creating a custom adapter for listview. Customer ListView Adapter

After creating this custom adapter you can get the reference of description and loveBtn and perform click operation on this.

Your adapter's getView() code will be like this-

   @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;
   }