пытается передать переменную int из Activity в Adapter - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь передать int pub_or_priv из моего Activity1 в Myadapter.

Я просмотрел здесь посты и думаю, что следил за ними правильно, но он все еще не работает.Значение в моем adapter всегда равно 0, тогда как оно должно быть 0, 1 или 2, как в случае со значением в моем Activity1.

Вот что ясделано.

В моем Activity1 я получаю "publicorprivate" с моего сервера и преобразую его в int с:

//convert public_or_private to an integer
pub_or_priv = Integer.parseInt(obj.getString("publicorprivate"));

Для разных ячеек в моем recyclerViewэто будет 0, 1 или 2.

Теперь я хочу передать это моему adapter, поэтому в моем adapter contructor у меня есть:

public MyAdapter(List<Review> reviewUsers, Activity activity, int pub_or_priv) {

        this.activity = activity;
        the_reviews = reviewUsers;
        this.mPub_or_priv = pub_or_priv;

    }

И в моем Activity1:

pAdapter = new MyAdapter(reviewList, this, pub_or_priv);

Затем в MyAdapter:

    @Override
        public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, final int position) {

            Review r = the_reviews.get(position);

            //shared_status will be Just U, Private or Public
            String shared_status ="";

            if(mPub_or_priv==0){
                //change colour depending on value
                ((ReviewHolder) viewHolder).phone_user_name.setTextColor(Color.parseColor("#DA850B"));
                shared_status = "Just U";
            }

            if(mPub_or_priv==1){
                ((ReviewHolder) viewHolder).phone_user_name.setTextColor(Color.parseColor("#0A7FDA"));
                shared_status = "Private";
            }

            if(mPub_or_priv==2){
                ((ReviewHolder) viewHolder).phone_user_name.setTextColor(Color.parseColor("#2AB40E"));
                shared_status = "Public";

            }


            ((ReviewHolder) viewHolder).phone_user_name.setText(shared_status);

etc..etc..

Однако в recyclerView во всех клетках phone_user_name textboxвсегда "Just U", в цвете #DA850B, тогда как на самом деле он должен быть Private и Public в некоторых ячейках, согласно значению pub_or_priv в Activity1.

Как мне правильно ввести pub_or_priv в мой adapter ?, спасибо.

1 Ответ

0 голосов
/ 26 апреля 2018

Похоже, вы используете одно значение в деятельности / адаптере, поэтому, конечно, все строки показывают одно и то же значение.

В адаптере используйте значение в экземпляре обзора, соответствующее текущей ячейке:

@Override
public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, final int position) {

    Review review = the_reviews.get(position);

    int pubOrPriv = review.getPublicOrPrivate();

    //shared_status will be Just U, Private or Public
    String shared_status = "";

    if (pubOrPriv == 0) {
        //change colour depending on value
        ((ReviewHolder) viewHolder).phone_user_name.setTextColor(Color.parseColor("#DA850B"));
        shared_status = "Just U";
    }

    if (pubOrPriv == 1) {
        ((ReviewHolder) viewHolder).phone_user_name.setTextColor(Color.parseColor("#0A7FDA"));
        shared_status = "Private";
    }

    if (pubOrPriv == 2) {
        ((ReviewHolder) viewHolder).phone_user_name.setTextColor(Color.parseColor("#2AB40E"));
        shared_status = "Public";

    }

    //.............
}
...