簡體   English   中英

試圖將一個int變量從Activity傳遞給Adapter

[英]trying to pass an int variable from Activity to Adapter

我正在嘗試將Activity1的int pub_or_priv傳遞給Myadapter

我看過這里的帖子,我認為我已經正確地遵循了它們,但仍然無法正常工作。 在我的值adapter總是0 ,而它應該是012 ,如在我的所述值的情況下Activity1

這就是我所做的。

在我的Activity1我從服務器獲取"publicorprivate"並將其轉換為一個int

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

在我的不同小區recyclerView這將是012

現在,我想將此傳遞給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 ,而實際上,根據Activity1pub_or_priv值,該pub_or_priv在某些單元格中應該為PrivatePublic

怎樣才能將pub_or_priv正確插入adapter

看起來您在活動/適配器中使用的是一個值,因此所有行當然都顯示相同的值。

在適配器中,使用Review實例中與當前單元格對應的值:

@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";

    }

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM