提问者:小点点

如何向buttons RecycerView添加不同的ID


我的项目是基于回收器视图。 每个元素的布局如下:


       <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="4dp">

        <ImageView
            android:id="@+id/imgview"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:padding="2dp" />

        <TextView
            android:id="@+id/txtview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="51dp"
            android:layout_marginTop="1dp"
            android:text="Line 1"
            android:textColor="@android:color/black"
            android:textSize="20sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/txtview2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="52dp"
            android:layout_marginTop="29dp"
            android:layout_marginBottom="1dp"
            android:text="Line 2"
            android:textSize="15sp" />

        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_alignParentEnd="true"
            android:layout_marginTop="3dp"
            android:layout_marginEnd="3dp"
            android:text="Voir plus" />

    </RelativeLayout>

我用这个编辑它:

        ArrayList<exempleitem> ExampleList = new ArrayList<>();
        ExampleList.add(new exempleitem(R.drawable.ic_android, "Line 1", "Line 2 ", button2.setId(R.id.hydro) ));
        ExampleList.add(new exempleitem(R.drawable.ic_baseline_airplanemode_active_24, "Line 3", "Line 4 ",button3.setId(R.id.hel)));
        ExampleList.add(new exempleitem(R.drawable.ic_baseline_beach_access_24, "Line 5", "Line 6 ",button4.setId(R.id.lit)));

我的问题是,我想改变每个按钮的ID,但它不起作用。 我现在想不出别的了,而且我是个乞丐。


共3个答案

匿名用户

我想你不知道回收视图是怎么工作的。 如果一个按钮与另一个按钮具有相同的id,只要它们生活在不同的“单元格”中,这并不重要。 这就是RecycerViews的目的。

所以你必须创建一个RecycerView适配器,把所有的逻辑都放进去,这个逻辑将基于一个数据集,这个数据集可能是一个数组,你的点击将基于这个数组的位置。 你可以从谷歌的官方指南中阅读更多

希望有帮助!

匿名用户

你不应该更改ID,如果我没有弄错的话,你甚至不允许这样做。

我在评论中看到你想要改变一个按钮的事件。 尝试将每个按钮click的操作封装到方法中,然后在按钮上再次设置OnClickListener以更改其单击操作。

更改操作前的初始代码

view.findViewById(R.id.button_first).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            dosmthA();
        }
    });

要简单地更改操作:

view.findViewById(R.id.button_first).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            dosmthB();
        }
    });

您甚至可以创建view.onClickListener()对象并在setOnClickListener()方法中交换它们,如下所示:

        View.OnClickListener action = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            smth();
        }
    }

    view.findViewById(R.id.button_first).setOnClickListener(action);

匿名用户

您可以使用ViewHolder和RecyclerView适配器为每个视图设置单击侦听器。。。 如果你和我分享适配器代码片段,我可以给你代码。。。 这是一个非常重要的问题