0

“当用户单击 Description TextView 和 Like ImageButton 时,我试图创建 Toast 消息。但 list_item 没有响应触摸事件”

“我经历了许多其他人回答关于改变焦点的问题。但他们都没有工作”

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

            }

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>

“我想让 list_item 响应点击事件并显示 toast 消息..请帮助..提前谢谢!!”

4

1 回答 1

0

这可能是因为您试图在 ListView 的项目单击侦听器中执行单击。

您可以通过为列表视图创建自定义适配器来修复它。客户列表视图适配器

创建此自定义适配器后,您可以获取它的引用descriptionloveBtn对其执行单击操作。

您的适配器的 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;
   }
于 2019-06-27T07:07:24.283 回答