Я просмотрел множество руководств в Интернете и работал с Retrofit в этом проекте.
На этот раз я последовал SiplifiedCoding Retrofit.
У меня есть утилита просмотра с множеством имен, загруженных из MySQL, и она работает нормально.
Я хочу, чтобы имена в моем окне повторного просмотра менялись между "In" и "Out" и сохранялись в MySQL при нажатии на имя. Даже покажи тост с надписью «В» или «Вне».
Возможно ли это?
Я пытался добавить «Переключатель» под каждым именем, но когда я «проверял» один Переключатель, он автоматически изменял много других Переключателей?
Я был бы так счастлив, если бы кто-нибудь мог помочь мне понять это ..
Должен ли я создать новую активность для этого?
Я получил фрагмент и адаптер для этого «списка пользователей».
Вот "UserAdapter"
В этом примере это «textViewSchool», который я хочу менять на «In» или «Out», когда вы нажимаете на него.
public class UsersAdapter extends RecyclerView.Adapter<UsersAdapter.UsersViewHolder> {
private Context mCtx;
private List<User> userList;
public UsersAdapter(Context mCtx, List<User> userList) {
this.mCtx = mCtx;
this.userList = userList;
}
@NonNull
@Override
public UsersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mCtx).inflate(R.layout.recyclerview_users, parent, false);
return new UsersViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull UsersViewHolder holder, int position) {
User user = userList.get(position);
holder.textViewName.setText(user.getName());
holder.textViewEmail.setText(user.getEmail());
holder.textViewSchool.setText(user.getSchool());
}
@Override
public int getItemCount() {
return userList.size();
}
class UsersViewHolder extends RecyclerView.ViewHolder {
TextView textViewName, textViewEmail, textViewSchool;
public UsersViewHolder(View itemView) {
super(itemView);
textViewName = itemView.findViewById(R.id.textViewName);
textViewEmail = itemView.findViewById(R.id.textViewEmail);
textViewSchool = itemView.findViewById(R.id.textViewSchool);
}
}
}
А это UsersFragment:
public class UsersFragment extends Fragment {
private RecyclerView recyclerView;
private UsersAdapter adapter;
private List<User> userList;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.users_fragment, container, false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
recyclerView = view.findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
Call<UsersResponse> call = RetrofitClient.getInstance().getApi().getUsers();
call.enqueue(new Callback<UsersResponse>() {
@Override
public void onResponse(Call<UsersResponse> call, Response<UsersResponse> response) {
userList = response.body().getUsers();
adapter = new UsersAdapter(getActivity(), userList);
recyclerView.setAdapter(adapter);
}
@Override
public void onFailure(Call<UsersResponse> call, Throwable t) {
}
});
}
Вот .xml:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="4dp">
<TextView
android:id="@+id/textViewEmail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Belal Khan"
android:textAppearance="@style/TextAppearance.AppCompat.Headline" />
<TextView
android:id="@+id/textViewName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Belal Khan"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Headline" />
<Switch
android:id="@+id/textViewSchool"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:checked="false"
android:onClick="onCheckedChanged"
android:splitTrack="false"
android:textOff="Out"
android:textOn="In" />