我的项目是基于回收器视图。 每个元素的布局如下:
<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,但它不起作用。 我现在想不出别的了,而且我是个乞丐。
我想你不知道回收视图是怎么工作的。 如果一个按钮与另一个按钮具有相同的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适配器为每个视图设置单击侦听器。。。 如果你和我分享适配器代码片段,我可以给你代码。。。 这是一个非常重要的问题