RecycleView problem z wyświetleniem roli użytkownika

0

Mam problem z wyświetleniem roli tzn wyświetla mi się tylko id roli. Mam dwie tabele users i roles. Pobieram użytkowników do listy i tak samo robię z rolami ale nie mam pojęcia jak zrobić żeby zamiast id była rola.
Z góry dziękuję za chęci pomocy.
Pozdrawiam
UsersAdapter

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 i) {
        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) {
        final User user = userList.get(position);

        holder.textViewFirstName.setText("Imię: "+ user.getfirst_name());
        holder.textViewLastName.setText("Nazwisko: "+user.getlast_name());
        holder.textViewEmail.setText("E-mail: "+user.getemail());
        holder.textViewRole.setText("Rola: "+user.getRoleString());

        holder.parentLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(mCtx, UserInformationActivity.class);
                intent.putExtra("userFirstName", user.getfirst_name());
                intent.putExtra("userLastName", user.getlast_name());
                intent.putExtra("userEmail", user.getemail());
                intent.putExtra("userRole", user.getRoleString());
                intent.putExtra("userId", user.getUserIdString());
                mCtx.startActivity(intent);
            }
        });
    }

    @Override
    public int getItemCount() {
        return userList.size();
    }

    class UsersViewHolder extends RecyclerView.ViewHolder {

        TextView textViewFirstName, textViewLastName, textViewEmail, textViewRole;
        RelativeLayout parentLayout;


        public UsersViewHolder(View itemView) {
            super(itemView);

            textViewFirstName = itemView.findViewById(R.id.textViewFirstName);
            textViewLastName = itemView.findViewById(R.id.textViewLastName);
            textViewEmail = itemView.findViewById(R.id.textViewEmail);
            textViewRole = itemView.findViewById(R.id.textViewRole);
            parentLayout = itemView.findViewById(R.id.recycler_view_users);
        }
    }


}

AllUsersActivity

public class AllUsersActivity extends AppCompatActivity {
    private RecyclerView recyclerView;
    private RelativeLayout layout;
    private UsersAdapter adapter;
    private List<User> userList;

    @Override
    protected void onStart() {
        super.onStart();
        if(!SharedPrefManager.getInstance(this).isLoggedIn()){

            Intent intent = new Intent(this, LoginActivity.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
            startActivity(intent);


        }
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_all_users);

        recyclerView = findViewById(R.id.recyclerView);
        recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));

        Call<UsersResponse> call = RetrofitClient.getInstance().getApi().getAllUsers();

        call.enqueue(new Callback<UsersResponse>() {
            @Override
            public void onResponse(Call<UsersResponse> call,  Response<UsersResponse> response) {
                
                userList = response.body().getAllUsers();
                adapter = new UsersAdapter(getApplicationContext(), userList);
                recyclerView.setAdapter(adapter);
            }

            @Override
            public void onFailure(Call<UsersResponse> call, Throwable t) {

            }

        });

    }
}

RolesResponse

public class RolesResponse {

    private boolean error;
    private List<Role> allRoles;

    public RolesResponse(boolean error, List<Role> allRoles) {
        this.error = error;
        this.allRoles =  allRoles;
    }

    public boolean isError() {
        return error;
    }

    public List<Role> getAllRoles() {
        return  allRoles;
    }
}

Role

public class Role {
    private int roles_id;
    private String role;

    public Role(int roles_id, String role) {

        this.roles_id = roles_id;
        this.role = role;
    }

    public int getrolesId() {
        return roles_id;
    }

    public String getrole() {
        return role;
    }

    public String getrolesIdString() {
        return Integer.toString(roles_id);
    }

}

User

public class User {

    private int users_id, roles;
    private String first_name, last_name, email;

    public User(int users_id, String first_name, String last_name, String email, int roles) {
        this.first_name = first_name;
        this.last_name = last_name;
        this.users_id = users_id;
        this.email = email;
        this.roles = roles;
    }

    public int getusers_id() {
        return users_id;
    }

    public String getfirst_name() {
        return first_name;
    }

    public String getlast_name() {
        return last_name;
    }

    public String getemail() {
        return email;
    }

    public int getroles() {
        return roles;
    }

    public String getRoleString() {

        return Integer.toString(roles);
    }

    public String getUserIdString() {
        return Integer.toString(users_id);
    }
}

UsersResonse

public class UsersResponse {

    private boolean error;
    private List<User> allUsers;

    public UsersResponse(boolean error, List<User> allUsers) {
        this.error = error;
        this.allUsers = allUsers;
    }

    public boolean isError() {
        return error;
    }

    public List<User> getAllUsers() {
        return allUsers;
    }
}

0

W którym miejscu pobierasz role użytkowników? Ja widzę, że pobierasz tylko użytkowników, którzy mają jakieś pole typu int roles, będącym pewnie jakimś ID dla ról (czymkolwiek to ID by miało nie być).

0

właśnie mam problem z pobraniem listy roli żebym mógł z niej korzystać w tym activity

0

A skąd ja mam wiedzieć jak wygląda Twoje API? To jakiś Twój serwis czy jaki?

0

Jest to prosta aplikacja do dodawania kilku rzeczy i ich wyświetlania
To jest moje API:

package com.example.barry.crm.api;
public interface Api {

    @FormUrlEncoded
    @POST("createuser")
    Call<DefaultResponse> createUser(
            @Field("first_name") String first_name,
            @Field("last_name") String last_name,
            @Field("email") String email,
            @Field("password") String password,
            @Field("roles") String roles
    );

    @FormUrlEncoded
    @POST("createnotescustomer")
    Call<DefaultResponse> createNotesCustomer(
            @Field("date_") String date_,
            @Field("note") String note,
            @Field("name_notes") String name_notes,
            @Field("task_status") String task_status,
            @Field("todo_type") String todo_type,
            @Field("user") String user,
            @Field("customer") String customer
    );

    @FormUrlEncoded
    @POST("createnotescompany")
    Call<DefaultResponse> createNotesCompany(
            @Field("date_") String date_,
            @Field("note") String note,
            @Field("name_notes") String name_notes,
            @Field("task_status") String task_status,
            @Field("todo_type") String todo_type,
            @Field("user") String user,
            @Field("company") String company
    );

    @FormUrlEncoded
    @POST("createcompany")
    Call<DefaultResponse> createCompany(
            @Field("company_name") String company_name,
            @Field("date_of_initial_contact") String date_of_initial_contact,
            @Field("nip") String nip,
            @Field("regon") String regon,
            @Field("web_site") String web_site,
            @Field("address_country") String address_country,
            @Field("address_state") String address_state,
            @Field("address_city") String address_city,
            @Field("address_street") String address_street,
            @Field("address_zip") String address_zip,
            @Field("address_home") String address_home,
            @Field("phone") String phone,
            @Field("email") String email,
            @Field("user") String user,
            @Field("customer_status") String customer_status
    );

    @FormUrlEncoded
    @POST("createcustomer")
    Call<DefaultResponse> createCustomer(
            @Field("first_name") String first_name,
            @Field("date_of_initial_contact") String date_of_initial_contact,
            @Field("last_name") String last_name,
            @Field("address_country") String address_country,
            @Field("address_state") String address_state,
            @Field("address_city") String address_city,
            @Field("address_street") String address_street,
            @Field("address_zip") String address_zip,
            @Field("address_home") String address_home,
            @Field("phone") String phone,
            @Field("email") String email,
            @Field("user") String user,
            @Field("customer_status") String customer_status
    );

    @FormUrlEncoded
    @POST("userlogin")
    Call<LoginResponse> userLogin(
            @Field("email") String email,
            @Field("password") String password
    );

    @GET("allusers")
    Call<UsersResponse> getAllUsers ();

    @GET("allroles")
    Call<RolesResponse> getAllRoles ();

    @GET("allcustomerstatus")
    Call<CustomerStatusResponse> getAllCustomerStatus ();

    @GET("allcustomers")
    Call<CustomerResponse> getAllCustomers ();

    @GET("allcompans")
    Call<CompanyResponse> getAllCompans ();

    @FormUrlEncoded
    @PUT("updateuser/{users_id}")
    Call<LoginResponse> updateUser(
            @Path("users_id") int users_id,
            @Field("first_name") String first_name,
            @Field("last_name") String last_name,
            @Field("email") String email

    );

    @FormUrlEncoded
    @PUT("updateuseradmin/{users_id}")
    Call<LoginResponse> updateUserAdmin(
            @Path("users_id") int users_id,
            @Field("first_name") String first_name,
            @Field("last_name") String last_name,
            @Field("email") String email,
            @Field("roles") String roles

    );

    @FormUrlEncoded
    @PUT("updatecustomer/{customer_id}")
    Call<LoginResponse> updateCustomer(
            @Path("customer_id") int customer_id,
            @Field("first_name") String first_name,
            @Field("date_of_initial_contact") String date_of_initial_contact,
            @Field("last_name") String last_name,
            @Field("address_country") String address_country,
            @Field("address_state") String address_state,
            @Field("address_city") String address_city,
            @Field("address_street") String address_street,
            @Field("address_zip") String address_zip,
            @Field("address_home") String address_home,
            @Field("phone") String phone,
            @Field("email") String email,
            @Field("user") String user,
            @Field("customer_status") String customer_status

    );

    @FormUrlEncoded
    @PUT("updatecompany/{company_id}")
    Call<LoginResponse> updateCompany(
            @Path("company_id") int company_id,
            @Field("company_name") String company_name,
            @Field("date_of_initial_contact") String date_of_initial_contact,
            @Field("nip") String nip,
            @Field("regon") String regon,
            @Field("web_site") String web_site,
            @Field("address_country") String address_country,
            @Field("address_state") String address_state,
            @Field("address_city") String address_city,
            @Field("address_street") String address_street,
            @Field("address_zip") String address_zip,
            @Field("address_home") String address_home,
            @Field("phone") String phone,
            @Field("email") String email,
            @Field("user") String user,
            @Field("customer_status") String customer_status

    );




    @FormUrlEncoded
    @PUT("updatepassword")
    Call<DefaultResponse> updatePassword(
            @Field("currentpassword") String currentpassword,
            @Field("newpassword") String newpassword,
            @Field("email") String email

    );

    @DELETE("deleteuser/{users_id}")
    Call<DefaultResponse> deleteUser(@Path("users_id") int users_id);

    @DELETE("deletecustomer/{customer_id}")
    Call<DefaultResponse> deleteCustomer(@Path("customer_id") int customer_id);

    @DELETE("deletecompany/{company_id}")
    Call<DefaultResponse> deleteCompany(@Path("company_id") int company_id);
}


0

Nie chodzi mi o to, jak wygląda interfejs używany przez Retrofita, tylko czy sam pisałeś ten backend, czy jest ogólnodostępny. W każdym razie, z tego co widzę, to masz osobny endpoint @GET("allroles"). Musisz w takim razie najpierw pobrać role i zapisać je gdzieś lokalnie. Potem możesz pobrać użytkowników i na podstawie ID ich roli wyciągnąć jej nazwę ze wcześniej zapisanych lokalnie ról.

0

pisałem to wszystko z poradnika. Kojarzę co mam zrobić tylko w tym problem że nie wiem jak

0

No to Ci napisałem jak. Jeżeli sam pisałeś z poradnika, to nie ma tu żadnych kroków, które wykraczają poza to, co już masz.

0

to wykracza poza moje zdolności programistyczne ale dzięki za pomoc

0

Ale którego z kroków opisanych przeze mnie nie jesteś w stanie wykonać?

  1. Pobierz role użytkowników.
  2. Zapisz lokalnie role użytkowników.
  3. Pobierz użytkowników.
  4. Zmapuj ID roli użytkownika na rolę na podstawie danych zapisanych w drugim korku. Opcjonalnie, ale najlepiej, utworzyć na to osobną strukturę danych.
  5. Przekaż użytkowników do adaptera RecyclerView.
0

robiłem tak jak piszesz ale w klasie Role w getRolesIdString i jak sprawdzałem to wyświetlało mi te role ale jedynie w tym miejscu a nie w recycleView

1 użytkowników online, w tym zalogowanych: 0, gości: 1