রিসাইক্লারভিউ - নির্দিষ্ট অবস্থানে ভিউ পান


140

আমি একটি RecyclerViewএবং একটি সঙ্গে একটি ক্রিয়াকলাপ আছে ImageView। আমি RecyclerViewঅনুভূমিকভাবে চিত্রের একটি তালিকা প্রদর্শন করতে ব্যবহার করছি । যখন আমি একটি ছবিতে ক্লিক কার্যকলাপ চিত্রটির একটি বড় ছবি দেখানো উচিত। এখনও পর্যন্ত সবকিছু ঠিকঠাক কাজ করে।RecyclerViewImageView

ImageButtonsক্রিয়াকলাপে এখন আরও দুটি রয়েছে : imageButton_leftএবং imageButton_right। আমি যখন ক্লিক করি তখন imageButton_leftপ্রান্তের চিত্রটি ImageViewবাম দিকে ঘুরতে হবে এবং প্রান্তের থাম্বনেইলটিকে RecyclerViewএই পরিবর্তনটি প্রতিবিম্বিত করা উচিত । একই অবস্থা imageButton_right

আমি ঘোরানো সক্ষম ImageView। তবে, আমি কীভাবে থাম্বনেলটি ঘোরতে পারি RecyclerView? আমি কিভাবে পেতে পারেন ViewHolder'র ImageView?

কোড:

ক্রিয়াকলাপ এক্সএমএল:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp" />


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/original_image"
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:scaleType="fitXY"
            android:src="@drawable/image_not_available_2" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:gravity="center_horizontal"
            android:orientation="horizontal">


            <ImageButton
                android:id="@+id/imageButton_left"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="20dp"
                android:background="@drawable/rotate_left_icon" />

            <ImageButton
                android:id="@+id/imageButton_right"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/rotate_right_icon" />

        </LinearLayout>
    </LinearLayout>
</LinearLayout>

আমার ক্রিয়াকলাপ কোড:

public class SecondActivity extends AppCompatActivity implements IRecyclerViewClickListener {


    RecyclerView mRecyclerView;
    LinearLayoutManager mLayoutManager;
    RecyclerViewAdapter mRecyclerViewAdapter;
    List<String> urls = new ArrayList<String>();
    ImageView mOriginalImageView;
    ImageButton mLeftRotate, mRightRotate;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        urls.clear();

        mRecyclerView = (RecyclerView) findViewById(R.id.recyclerview);
        mLayoutManager = new LinearLayoutManager(this, android.support.v7.widget.LinearLayoutManager.HORIZONTAL, false);
        mLayoutManager.setOrientation(android.support.v7.widget.LinearLayoutManager.HORIZONTAL);
        mRecyclerView.setLayoutManager(mLayoutManager);
        mRecyclerViewAdapter = new RecyclerViewAdapter(this, urls);
        mRecyclerView.setAdapter(mRecyclerViewAdapter);

        mOriginalImageView = (ImageView) findViewById(R.id.original_image);
        mLeftRotate = (ImageButton) findViewById(R.id.imageButton_left);
        mLeftRotate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mOriginalImageView.setRotation(mOriginalImageView.getRotation() - 90);
            }
        });


        mRightRotate = (ImageButton) findViewById(R.id.imageButton_right);
        mRightRotate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mOriginalImageView.setRotation(mOriginalImageView.getRotation() + 90);
            }
        });

        Intent intent = getIntent();
        if (intent != null) {

            String portfolio = intent.getStringExtra("portfolio");

            try {

                JSONArray jsonArray = new JSONArray(portfolio);

                for (int i = 0; i < jsonArray.length(); i++) {

                    JSONObject jsonObject = jsonArray.getJSONObject(i);

                    String url = jsonObject.getString("url");
                    urls.add(url);
                }

                Log.d(Const.DEBUG, "URLs: " + urls.toString());

                mRecyclerViewAdapter.notifyDataSetChanged();

            } catch (Exception e) {
                e.printStackTrace();
            }

        }

    }


    @Override
    public void onItemClick(int position) {
        Picasso.with(this).load(urls.get(position)).into(mOriginalImageView);
    }
}

রিসাইক্লার ভিউয়ের জন্য আমার কাস্টম অ্যাডাপ্টার:

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {

    Context context;
    List<String> mUrls = new ArrayList<String>();

    IRecyclerViewClickListener mIRecyclerViewClickListener;

    public int position;

    public int getPosition() {
        return position;
    }

    public void setPosition(int position) {
        this.position = position;
    }



    public RecyclerViewAdapter(Context context, List<String> urls) {
        this.context = context;
        this.mUrls.clear();
        this.mUrls = urls;

        Log.d(Const.DEBUG, "Urls Size: " + urls.size());
        Log.d(Const.DEBUG, urls.toString());

        if (context instanceof IRecyclerViewClickListener)
            mIRecyclerViewClickListener = (IRecyclerViewClickListener) context;
        else
            Log.d(Const.DEBUG, "Implement IRecyclerViewClickListener in Activity");
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.item_horizontal_recyclerview, parent, false);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        Picasso.with(context).load(mUrls.get(position)).into(holder.mImageView);
    }

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


    public void rotateThumbnail() {


    }

    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        public ImageView mImageView;
        public View v;

        public ViewHolder(View v) {
            super(v);
            v.setTag(getAdapterPosition());
            v.setOnClickListener(this);
            this.mImageView = (ImageView) v.findViewById(R.id.image);
        }

        @Override
        public void onClick(View v) {
            this.v = v;
            mIRecyclerViewClickListener.onItemClick(getAdapterPosition());
        }
    }


}

1
আপনার এটিকে আপনার ভিউহোল্ডার কনস্ট্রাক্টারে তৈরি করা উচিত, এমন একটি সম্পত্তি যুক্ত করুন যা আপনাকে বলবে যে চিত্রটি ঘোরানোর দরকার আছে, তবে কেবল আপনার ডেটাতে সেই সম্পত্তিটি পরিবর্তন করুন এবং পুনর্বিবেচনাভিউ পুনরায় লোড করতে নোটিফাইড ডেটাসেট চেঞ্জড কল করুন
Nanoc

উত্তরের কোনওটি কি আপনার সমস্যার সমাধান করে?
স্কট বিগস

পারফরম্যান্স ইস্যুতে ভিউহোল্ডার স্থির হওয়া উচিত। বাইরের শ্রেণি থেকে সমস্ত ভেরিয়েবলগুলি কনস্ট্রাক্টরের মাধ্যমে পাস করা উচিত।
অ্যাপিদেভো

@ স্কট এর উত্তরের পরিপূরক হিসাবে এখানে
2:53

উত্তর:


149

আমি মনে করি আপনি LinearLayoutManagerতালিকাটি দেখানোর জন্য একটি ব্যবহার করছেন । এটির একটি দুর্দান্ত পদ্ধতি রয়েছে যা findViewByPositionএটি বলে

প্রদত্ত অ্যাডাপ্টারের অবস্থানের প্রতিনিধিত্ব করে এমন ভিউ সন্ধান করে।

আপনার যা প্রয়োজন তা হ'ল আপনার আগ্রহী আইটেমটির অ্যাডাপ্টারের অবস্থান।

সম্পাদনা : মন্তব্যগুলিতে পল ওউইটাসেকেক দ্বারা উল্লিখিত , findViewByPositionএটি এমন একটি পদ্ধতি যা LayoutManagerএটি সমস্ত লেআউটম্যানেজারের (যেমন StaggeredGridLayoutManager, ইত্যাদি) সাথে কাজ করবে is


9
আসলে এটির একটি পদ্ধতি LayoutManagerতাই এটি সমস্ত লেআউটম্যানেজার সাবক্লাসের জন্য কাজ করবে।
পল ওউইটাসেকেক

উত্স কোড তাকান। লাইনারলআউটআম্যাঙ্গার প্রিলেআউট না থাকাকালীন ব্যাকিং অ্যারেটিতে সরাসরিঅ্যাক্সেসের মাধ্যমে সন্ধান করে, যখন রিসাইক্লারভিউ পদ্ধতিটি সর্বদা ট্র্যাভারসাল করে। সুতরাং এই পদ্ধতি সম্ভবত আরও দক্ষ।
নেমস্পেস

আরে @stanO তুমি আমাকে এই ব্যাপারে সাহায্য দয়া করে করতে পারেন stackoverflow.com/questions/49952965/...

3
প্রত্যাবর্তনসমূহ: দেখুন - সেই শিশু দৃষ্টিভঙ্গি যা প্রদত্ত অবস্থানের প্রতিনিধিত্ব করে বা যদি অবস্থানটি স্থির না করা হয় তবে
শূন্যপদ

মনে রাখবেন যে অ্যাডাপ্টার তালিকায় যোগ না হওয়া পর্যন্ত আপনাকে অপেক্ষা করতে হবে,
বিশদটির

241

এটিই আপনি খুঁজছেন

আমারও এই সমস্যা ছিল এবং আপনার মত উত্তরটি খুঁজে পাওয়া খুব কঠিন। তবে একটি নির্দিষ্ট অবস্থান থেকে ভিউহোল্ডার পাওয়ার একটি সহজ উপায় আছে (এমন কিছু যা আপনি সম্ভবত অ্যাডাপ্টারে অনেক কিছু করতে পারেন)।

myRecyclerView.findViewHolderForAdapterPosition(pos);

দ্রষ্টব্য: যদি ভিউটি পুনর্ব্যবহার করা হয় তবে এটি ফিরে আসবে null। দ্রুত আমার গুরুত্বপূর্ণ বাদ পড়ার জন্য মাইকেলকে ধন্যবাদ।


3
এটি আমি লেআউটম্যানেজারে ঠিক খুঁজছিলাম
এড লি

12
এটি কাজ করে, তবে, আপনি যদি ViewHolderউল্লেখ করার চেষ্টা করছেন "পুনর্ব্যবহারযোগ্য" ছিল, এটি ফিরে আসবে null
মাইকেল

5
@ মিশেল, ভাল ধরা! এটি সেখানে আপনার সকলের জন্য একটি সতর্কতা, প্রথমে নাল পরীক্ষা করুন (হ্যাঁ, অ্যান্ড্রয়েডের সমস্ত কিছুর মতো)!
স্কট বিগস 20

1
আমরা অ্যাডাপ্টারের ভিতরে থেকে এটি করতে পারি?
মাউকার

2
@ মওকার: আপনি এটিকে এমন কোনও কিছু থেকে ব্যবহার করতে পারেন যা পুনর্ব্যবহারযোগ্য দৃষ্টান্তটি অ্যাক্সেস করতে পারে।
স্কট বিগস

26

আপনি যদি চান View, itemViewতবে ভিউহোল্ডারটির মতো সম্পত্তিটি অ্যাক্সেস করার বিষয়টি নিশ্চিত করুন :myRecyclerView.findViewHolderForAdapterPosition(pos).itemView;


11

আপনি উভয় ব্যবহার করতে পারেন

recyclerViewInstance.findViewHolderForAdapterPosition(adapterPosition) এবং recyclerViewInstance.findViewHolderForLayoutPosition(layoutPosition)। নিশ্চিত হয়ে নিন যে রিসাইক্লারভিউ ভিউতে দুই ধরণের অবস্থান ব্যবহার করা হয়

অ্যাডাপ্টারের অবস্থান: অ্যাডাপ্টারে একটি আইটেমের অবস্থান। এটি অ্যাডাপ্টারের দৃষ্টিকোণ থেকে অবস্থান। বিন্যাসের অবস্থান: সর্বশেষতম বিন্যাসের গণনায় কোনও আইটেমের অবস্থান। এটি লেআউটম্যানেজারের দৃষ্টিকোণ থেকে অবস্থান। আপনার getAdapterPosition()জন্য findViewHolderForAdapterPosition(adapterPosition)এবং এর getLayoutPosition()জন্য ব্যবহার করা উচিত findViewHolderForLayoutPosition(layoutPosition)

ব্যবহারকারীরা প্রথমবারের জন্য ক্লিক করছে কিনা তা যাচাই করতে পুনর্ব্যবহারযোগ্য অ্যাডাপ্টারে এবং অন্যান্য সদস্য ভেরিয়েবলের পূর্বে নির্বাচিত আইটেমের অবস্থান ধরে রাখতে সদস্যের ভেরিয়েবল নিন।

নমুনা কোড এবং স্ক্রিন শটগুলি নীচে আরও তথ্যের জন্য সংযুক্ত করা হয়েছে।

public class MainActivity extends AppCompatActivity {     

private RecyclerView mRecyclerList = null;    
private RecyclerAdapter adapter = null;    

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

    mRecyclerList = (RecyclerView) findViewById(R.id.recyclerList);    
}    

@Override    
protected void onStart() {    
    RecyclerView.LayoutManager layoutManager = null;    
    String[] daysArray = new String[15];    
    String[] datesArray = new String[15];    

    super.onStart();    
    for (int i = 0; i < daysArray.length; i++){    
        daysArray[i] = "Sunday";    
        datesArray[i] = "12 Feb 2017";    
    }    

    adapter = new RecyclerAdapter(mRecyclerList, daysArray, datesArray);    
    layoutManager = new LinearLayoutManager(MainActivity.this);    
    mRecyclerList.setAdapter(adapter);    
    mRecyclerList.setLayoutManager(layoutManager);    
}    
}    


public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.MyCardViewHolder>{          

private final String TAG = "RecyclerAdapter";        
private Context mContext = null;        
private TextView mDaysTxt = null, mDateTxt = null;    
private LinearLayout mDateContainerLayout = null;    
private String[] daysArray = null, datesArray = null;    
private RecyclerView mRecyclerList = null;    
private int previousPosition = 0;    
private boolean flagFirstItemSelected = false;    

public RecyclerAdapter(RecyclerView mRecyclerList, String[] daysArray, String[] datesArray){    
    this.mRecyclerList = mRecyclerList;    
    this.daysArray = daysArray;    
    this.datesArray = datesArray;    
}    

@Override    
public MyCardViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {    
    LayoutInflater layoutInflater = null;    
    View view = null;    
    MyCardViewHolder cardViewHolder = null;    
    mContext = parent.getContext();    
    layoutInflater = LayoutInflater.from(mContext);    
    view = layoutInflater.inflate(R.layout.date_card_row, parent, false);    
    cardViewHolder = new MyCardViewHolder(view);    
    return cardViewHolder;    
}    

@Override    
public void onBindViewHolder(MyCardViewHolder holder, final int position) {    
    mDaysTxt = holder.mDaysTxt;    
    mDateTxt = holder.mDateTxt;    
    mDateContainerLayout = holder.mDateContainerLayout;    

    mDaysTxt.setText(daysArray[position]);    
    mDateTxt.setText(datesArray[position]);    

    if (!flagFirstItemSelected){    
        mDateContainerLayout.setBackgroundColor(Color.GREEN);    
        flagFirstItemSelected = true;    
    }else {    
        mDateContainerLayout.setBackground(null);    
    }    
}    

@Override    
public int getItemCount() {    
    return daysArray.length;    
}    

class MyCardViewHolder extends RecyclerView.ViewHolder{    
    TextView mDaysTxt = null, mDateTxt = null;    
    LinearLayout mDateContainerLayout = null;    
    LinearLayout linearLayout = null;    
    View view = null;    
    MyCardViewHolder myCardViewHolder = null;    

    public MyCardViewHolder(View itemView) {    
        super(itemView);    
        mDaysTxt = (TextView) itemView.findViewById(R.id.daysTxt);    
        mDateTxt = (TextView) itemView.findViewById(R.id.dateTxt);    
        mDateContainerLayout = (LinearLayout) itemView.findViewById(R.id.dateContainerLayout);    

        mDateContainerLayout.setOnClickListener(new View.OnClickListener() {    
            @Override    
            public void onClick(View v) {    
                LinearLayout linearLayout = null;    
                View view = null;    

                if (getAdapterPosition() == previousPosition){    
                    view = mRecyclerList.findViewHolderForAdapterPosition(previousPosition).itemView;    
                    linearLayout = (LinearLayout) view.findViewById(R.id.dateContainerLayout);    
                    linearLayout.setBackgroundColor(Color.GREEN);    
                    previousPosition = getAdapterPosition();    

                }else {    
                    view = mRecyclerList.findViewHolderForAdapterPosition(previousPosition).itemView;    
                    linearLayout = (LinearLayout) view.findViewById(R.id.dateContainerLayout);    
                    linearLayout.setBackground(null);    

                    view = mRecyclerList.findViewHolderForAdapterPosition(getAdapterPosition()).itemView;    
                    linearLayout = (LinearLayout) view.findViewById(R.id.dateContainerLayout);    
                    linearLayout.setBackgroundColor(Color.GREEN);    
                    previousPosition = getAdapterPosition();    
                }    
            }    
        });    
    }    
}       

} প্রথম উপাদান নির্বাচিত দ্বিতীয় উপাদান নির্বাচিত এবং পূর্বে নির্বাচিত আইটেমটি নির্বাচিত হয়ে যায় পঞ্চম উপাদান নির্বাচিত এবং পূর্বে নির্বাচিত আইটেমটি অনির্বাচিত হয়ে যায়


আর আমি ভাবলাম এই আলোচনা নিঃশেষ হয়ে গেছে! এই বিষয়টি আরও স্পষ্ট করার জন্য ধন্যবাদ।
স্কট বিগস

2
এখানে আমি আগের আইটেমটির রঙ পরিবর্তন করার চেষ্টা করার সময় আমি অন্য ব্লকটিতে নুলপয়েন্টার ব্যতিক্রম পাচ্ছি, তাই আমি নাল চেক যুক্ত করেছি, এখন এটি যদি নালপয়েন্টার ব্যতিক্রমী হয় তবে এটি কখনই সেই ব্লকে প্রবেশ করবে না, সুতরাং আগের আইটেমের রঙ কখনও পরিবর্তন হয় না। এখন আমার পুনর্ব্যবহারযোগ্য ভিউতে একাধিক রঙিন আইটেম রয়েছে। আমি কীভাবে এটি সমাধান করব
অভিলাষ রেড্ডি

8

আপনি ভিউহোল্ডারের অ্যারেলিস্ট তৈরি করতে পারেন:

 ArrayList<MyViewHolder> myViewHolders = new ArrayList<>();
 ArrayList<MyViewHolder> myViewHolders2 = new ArrayList<>();

এবং, তালিকায় সমস্ত ভিউহোল্ডার (গুলি) সংরক্ষণ করুন:

 @Override
    public void onBindViewHolder(@NonNull final MyViewHolder holder, final int position) {
        final String str = arrayList.get(position);

        myViewHolders.add(position,holder);
}

এবং আপনার প্রয়োজন অনুসারে অ্যারেলিস্টে অন্য ভিউহোল্ডার যুক্ত / সরান।


2 দিনের মতো পুনর্ব্যবহারযোগ্য ধারকরা পেতে সংগ্রাম করার জন্য আপনাকে ধন্যবাদ।
nimi0112

5

নিম্নলিখিতটি ব্যবহার করে আপনি একটি পুনর্ব্যবহারযোগ্য ভিউতে একটি নির্দিষ্ট পদের জন্য একটি ভিউ পেতে পারেন

int position = 2;
RecyclerView.ViewHolder viewHolder = recyclerview.findViewHolderForItemId(position);
View view = viewHolder.itemView;
ImageView imageView = (ImageView)view.findViewById(R.id.imageView);

5

আপনি কেবল রিসাইক্লার দেখার জন্য " ফাইন্ডহোলারফোর্ডএডাপ্টারপজিশন " পদ্ধতিটি ব্যবহার করতে পারেন এবং তারপরে আপনি একটি ভিউহোল্ডার অবজেক্ট পাবেন যেটি আপনার অ্যাডাপ্টারের ভিউহোল্ডারের মধ্যে ভিউহোল্ডারকে টাইপকাস্ট করুন যাতে আপনি সরাসরি আপনার দর্শকের দৃষ্টিভঙ্গি অ্যাক্সেস করতে পারেন

কোটলিনের জন্য নমুনা কোডটি নীচে দেওয়া হল

 val viewHolder = recyclerView.findViewHolderForAdapterPosition(position)
 val textview=(viewHolder as YourViewHolder).yourTextView

4

মনে রাখবেন যে অ্যাডাপ্টারের তালিকায় যোগ হওয়া পর্যন্ত আপনাকে অপেক্ষা করতে হবে, তারপরে আপনি অবস্থান অনুসারে দেখার চেষ্টা করতে পারেন

final int i = 0;
recyclerView.setAdapter(adapter);
recyclerView.post(new Runnable() {
    @Override
    public void run() {
        View view = recyclerView.getLayoutManager().findViewByPosition(i);
    }
});

2
আপনি একাধিক আইটেম যুক্ত করলে এটি সর্বদা কার্যকর হয় না (যেমন: আপনার যদি একটি বোতাম থাকে যা সেগুলি যুক্ত করে এবং দ্রুত চাপ দেয়)। আপনার বিলম্বের সাথে রান রানযোগ্য যুক্ত করা উচিত।
অ্যালেক্স বারডুয়েল

3

পুনর্ব্যবহারযোগ্য ভিউয়ের একটি নির্দিষ্ট অবস্থান থেকে একটি ভিউ পেতে আপনার পুনরায় ব্যবহারকারীর ভিউ অবজেক্টে ফাইন্ডহোল্ডারফোর্ডএডাপ্টারপজিশন (অবস্থান) কল করতে হবে যা রিসাইক্লারভিউ ফিরে আসবে। ভিউহোল্ডার

আইটেম ভিউ দিয়ে ফিরে আসা রিসাইক্লারভিউ.ভিউহোল্ডার অবজেক্ট থেকে আপনি সেই নির্দিষ্ট অবস্থানে সমস্ত ভিউ অ্যাক্সেস করতে পারবেন

RecyclerView.ViewHolder rv_view = recyclerView.findViewHolderForAdapterPosition(position);

ImageView iv_wish = rv_view.itemView.findViewById(R.id.iv_item);

1

আপনি পাশাপাশি এটি করতে পারেন, আপনি যখন পুনর্ব্যবহারযোগ্য অবস্থান আইটেমটি ক্লিক করার পরে কোনও দৃশ্য পরিবর্তন করতে চান এটির সাহায্য করবে will

@Override
public void onClick(View view, int position) {

            View v =  rv_notifications.getChildViewHolder(view).itemView;
            TextView content = v.findViewById(R.id.tv_content);
            content.setText("Helloo");

        }

1

পুনর্ব্যাবসায়ী প্রদর্শন তালিকা থেকে নির্দিষ্ট দর্শন পেতে বা পুনর্ব্যবহারকারী প্রদর্শনের সম্পাদনার সময়ে ত্রুটি দেখান।

private void popupErrorMessageAtPosition(int itemPosition) {

    RecyclerView.ViewHolder viewHolder = recyclerView.findViewHolderForAdapterPosition(itemPosition);
    View view = viewHolder.itemView;
    EditText etDesc = (EditText) view.findViewById(R.id.et_description);
    etDesc.setError("Error message here !");
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.