Я работаю над приложением, в котором я выбрал некоторые данные с сервера в программе повторного просмотра. Макет моего списка повторов содержит 3 вида [текстовое представление (для отображения названия события), значок редактирования (для редактирования имен), один переключатель для включения / выключения событий. После нескольких дней работы я обнаружил странную проблему в этом модуле, то есть, когда я включаю 1-й переключатель, я автоматически включаю 10-й переключатель в обзоре реселлера, если меньше 10 имен, скажем, если 9, то все переключатели работают нормально, тогда на входе 10-го они действуют, как упомянуто, и поэтому один поворот на 2-й включает 11-й. Как будто recylerview занимает 10-ю позицию как 1-ю и так далее.
Я знаю, что это странно, но должна быть проблема с положением или чем-то в этом роде. Я погуглил, но ничего не смог найти по этому поводу. Я публикую код моего адаптера / списка item.xml. если вам нужна другая вещь, я опубликую ее позже.
:::: eventAdapter.java::::
public class eventAdapter extends RecyclerView.Adapter<eventAdapter.UsersViewHolder> {
Context context;
List<EventModel> userListResponseData;
public eventAdapter(Context context, List<EventModel> userListResponseData) {
this.userListResponseData = userListResponseData;
this.context = context;
}
@Override
public UsersViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.event_list_items, parent,false);
UsersViewHolder usersViewHolder = new UsersViewHolder(view);
return usersViewHolder;
}
@Override
public void onBindViewHolder(final UsersViewHolder holder, final int position) {
// set the data
final String eventName = userListResponseData.get(position).getEvent_name();
holder.ed_eventname.setText(eventName);
holder.ic_event_edit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentActivity activity = (FragmentActivity)(context);
FragmentManager fm = activity.getSupportFragmentManager();
EditEvent_Dialog alertDialog = new EditEvent_Dialog();
Bundle bundle = new Bundle();
bundle.putString("event_name", eventName);
alertDialog.setArguments(bundle);
alertDialog.show(fm, "fragment_alert");
//
}
});
holder.event_cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean state=holder.EventSwitch.isChecked();
if (state){
Toast.makeText(context, eventName+" is Activated", Toast.LENGTH_SHORT).show();
}
else
Toast.makeText(context, eventName+" is Deactivated", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public int getItemCount() {
return userListResponseData.size(); // size of the list items
}
class UsersViewHolder extends RecyclerView.ViewHolder {
// init the item view's
private TextView ed_eventname;
private ImageView ic_event_edit;
private Switch EventSwitch;
private CardView event_cardView;
public UsersViewHolder(View itemView) {
super(itemView);
// get the reference of item view's
ed_eventname = (TextView) itemView.findViewById(R.id.fetchevent_name);
ic_event_edit = (ImageView) itemView.findViewById(R.id.edit_event);
EventSwitch = (Switch) itemView.findViewById(R.id.event_switch);
event_cardView = (CardView) itemView.findViewById(R.id.event_list_card);
}
}
}
:::: event_list_items.xml ::::
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/event_list_card"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
card_view:cardBackgroundColor="@color/colorPrimary"
card_view:cardCornerRadius="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@color/colorPrimary">
<TextView
android:id="@+id/fetchevent_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:layout_gravity="left|center"
android:padding="5dp"
android:textSize="15sp"
android:layout_margin="5dp"
/>
<ImageView
android:id="@+id/edit_event"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/pencilicon"
android:layout_margin="5dp"
android:layout_gravity="center"
android:padding="5dp"/>
<Switch
android:id="@+id/event_switch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:layout_gravity="end|center"
android:theme="@style/SwitchCompatTheme" />
</LinearLayout>
</android.support.v7.widget.CardView>
:::: Recyclerview в основном макете ::::
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView_event"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
:::: :::: EDIT
EventModel.java
public class EventModel {
public String event_name;
public EventModel(String event_name){
this.event_name = event_name;
}
public EventModel(){
}
public void setEvent_name(String event_name) {
this.event_name = event_name;
}
public String getEvent_name() {
return event_name;
}
}