Recyclerview "CardView" с кнопками, загруженными из MySQL - PullRequest
0 голосов
/ 18 ноября 2018

Я просмотрел множество руководств в Интернете и работал с 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" />   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...