রিসাইক্লারভিউ দিয়ে কীভাবে একটি অনুভূমিক তালিকাভিউ তৈরি করবেন?


337

আমার আমার অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে একটি অনুভূমিক তালিকাভিউ প্রয়োগ করতে হবে। আমি কিছুটা গবেষণা করেছি এবং এলো যে আমি কীভাবে অ্যান্ড্রয়েডে একটি অনুভূমিক তালিকাটি তৈরি করতে পারি? এবং অ্যান্ড্রয়েডে অনুভূমিক তালিকাভিউ? যাইহোক, এই প্রশ্নগুলি পুনর্ব্যবহারযোগ্য প্রকাশের আগে জিজ্ঞাসা করা হয়েছিল এটি পুনর্নবীকরণের সাথে এখন আরও কার্যকর করার আরও ভাল উপায় কি?


12
LinearLayoutManagerসেট করতে ওরিয়েন্টেশন সহ কেবল একটি ব্যবহার করুন HORIZONTAL
ডিম নেলিবাবা

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

উত্তর:


738

এখনই রিসাইক্লারভিউয়ের সাথে এটি প্রয়োগ করার আরও ভাল কোনও উপায় আছে কি?

হ্যাঁ.

আপনি যখন একটি ব্যবহার করেন RecyclerView, আপনাকে LayoutManagerএমন একটি নির্দিষ্ট করা দরকার যা দৃষ্টিতে প্রতিটি আইটেম রাখার জন্য দায়ী। LinearLayoutManagerআপনি শুধু একটি স্বাভাবিক মত, একটি অভিযোজন নির্দিষ্ট করার অনুমতি দেয় LinearLayoutহবে।

এর সাথে একটি অনুভূমিক তালিকা তৈরি করতে আপনি এমন RecyclerViewকিছু করতে পারেন:

LinearLayoutManager layoutManager
    = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);

RecyclerView myList = (RecyclerView) findViewById(R.id.my_recycler_view);
myList.setLayoutManager(layoutManager);

আমি চেষ্টা করেছিলাম, এটি এটি অনুভূমিক করে তোলে তবে মনে হয় এটি অ্যাডাপ্টারের সারি বাচ্চাদেরও অনুভূমিকভাবে পরিবর্তন করে। আমার একটি রিলেটিভ লেআউট আছে। আমি কীভাবে এটি ঠিক করব নিশ্চিত নই?
মুহাম্মদ উমর

2
RelativeLayoutঅনুভূমিক বনাম উল্লম্ব কোনও ধারণা নেই, তাই আমি সত্যিই প্রশ্নটি বুঝতে পারি না।
ব্রায়ান হার্বস্ট

2
স্পষ্টতই রিসাইক্লারভিউ এবং অনুভূমিকভাবে স্ক্রোলিং লেআউটম্যানাজারের সাথে কিছু সমস্যা আছে ... কোড. google.com/p/android/issues/detail?id=74772 - এটি খুঁজে পেয়েছে কারণ আমি একটি অনুভূমিকভাবে স্ক্রোলিং রিসাইক্লারভিউ
এজেন্টকনফফ

জয়নোডিস আপনি কী ভেবে ব্যবহার করতে পারেন? লিনিয়ারলআউটম্যানেজারটি কি আমদানি হিসাবে দেখায় না? আমি কি কিছু মিস করছি
Lion789

@ তানিস .7.x এটি আমার পক্ষে দুর্দান্ত কাজ করে তবে এটি তালিকাটি বাম থেকে ডানে পপুলেট করে। ডান থেকে বামে পপুলেশন করার কোনও উপায় আছে কি কেউ জানেন? (তালিকার প্রথম আইটেমটি ডানদিকে রয়েছে, সূচী 1 এ আইটেমটি বামে এবং তারপরে আরও রয়েছে ...)
উত্থাপিত

169
 <android.support.v7.widget.RecyclerView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layoutManager="android.support.v7.widget.LinearLayoutManager" />

কিভাবে লেআউট ম্যানেজার সেট করবেন?
কাই ওয়াং

@ কাইয়াং পিএলএস উপরে "ট্যানিস 7x" উত্তর দেখুন।
সেদ্ধ জল

app:layoutManager="android.support.v7.widget.LinearLayoutManager"রিলিজ বিল্ডের জন্য কাজ করবে না। আমি মুক্তির বিল্ডটি এই সমস্যার মুখোমুখি হয়েছি।
আবু ইউসুফ

আমি কীভাবে ইন্টারফেস বিল্ডারে এটি প্রদর্শিত হবে তা সন্ধান করছিলাম। সরঞ্জামসমূহ: ওরিয়েন্টেশন = "অনুভূমিক" সরঞ্জামগুলি: লেআউটম্যানাজার = "android.support.v7.widget.LinearLayoutManager" ধন্যবাদ আমাকে সংরক্ষণ করেছে।
মোহাম্মদ তাব্বারা

'<androidx.recyclerview.widget.RecyclerView Android: লেআউট_উইথ = "ম্যাচ_প্যারেন্ট" অ্যান্ড্রয়েড: বিন্যাস_ উচ্চতা = "70 ডিপি" অ্যান্ড্রয়েড: লেআউট_গ্রাভিটি = "নীচে" অ্যান্ড্রয়েড: ওরিয়েন্টেশন = "অনুভূমিক" অ্যাপ্লিকেশন: লেআউটমেঞ্জার = "অ্যান্ড্রয়েডক্স.রেসিআরভিউইনআউট" /> '
ইয়্যানি

74

সম্পূর্ণ উদাহরণ

এখানে চিত্র বর্ণনা লিখুন

উল্লম্ব RecyclerViewএবং অনুভূমিকের মধ্যে একমাত্র আসল পার্থক্য হ'ল আপনি কীভাবে সেট আপ করেন LinearLayoutManager। এখানে কোড স্নিপেট। পুরো উদাহরণ নীচে।

LinearLayoutManager horizontalLayoutManagaer = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.HORIZONTAL, false);
recyclerView.setLayoutManager(horizontalLayoutManagaer);

এই পূর্ণাঙ্গ উদাহরণটি আমার উল্লম্ব RecyclerViewউত্তরের পরে তৈরি করা হয়েছে ।

গ্রেডল নির্ভরতা আপডেট করুন

নিম্নলিখিত অ্যাপ্লিকেশনগুলি আপনার অ্যাপ্লিকেশন gradle.buildফাইলে রয়েছে তা নিশ্চিত করুন:

implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:recyclerview-v7:27.1.1'

আপনি সর্বাধিক বর্তমান যাহাতে সংস্করণ সংখ্যাগুলি আপডেট করতে পারেন ।

ক্রিয়াকলাপ বিন্যাস তৈরি করুন

যোগ RecyclerViewআপনার xml লেআউটে।

activity_main.xml

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

    <android.support.v7.widget.RecyclerView
        android:id="@+id/rvAnimals"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</RelativeLayout>

আইটেম লেআউট তৈরি করুন

আমাদের প্রতিটি আইটেমের RecyclerViewএকটিতে একটি একক রঙিন হতে Viewচলেছে TextView। একটি নতুন লেআউট রিসোর্স ফাইল তৈরি করুন।

recyclerview_item.xml

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

    <View
        android:id="@+id/colorView"
        android:layout_width="100dp"
        android:layout_height="100dp"/>

    <TextView
        android:id="@+id/tvAnimalName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp"/>

</LinearLayout>

অ্যাডাপ্টার তৈরি করুন

RecyclerViewআপনার ডেটা সঙ্গে প্রতিটি সারি (অনুভূমিক আইটেম) কতবার দেখা হয়েছে পূরণ করতে একটা এডাপটার প্রয়োজন। একটি নতুন জাভা ফাইল তৈরি করুন।

MyRecyclerViewAdapter.java

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

    private List<Integer> mViewColors;
    private List<String> mAnimals;
    private LayoutInflater mInflater;
    private ItemClickListener mClickListener;

    // data is passed into the constructor
    MyRecyclerViewAdapter(Context context, List<Integer> colors, List<String> animals) {
        this.mInflater = LayoutInflater.from(context);
        this.mViewColors = colors;
        this.mAnimals = animals;
    }

    // inflates the row layout from xml when needed
    @Override
    @NonNull
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = mInflater.inflate(R.layout.recyclerview_item, parent, false);
        return new ViewHolder(view);
    }

    // binds the data to the view and textview in each row
    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        int color = mViewColors.get(position);
        String animal = mAnimals.get(position);
        holder.myView.setBackgroundColor(color);
        holder.myTextView.setText(animal);
    }

    // total number of rows
    @Override
    public int getItemCount() {
        return mAnimals.size();
    }

    // stores and recycles views as they are scrolled off screen
    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
        View myView;
        TextView myTextView;

        ViewHolder(View itemView) {
            super(itemView);
            myView = itemView.findViewById(R.id.colorView);
            myTextView = itemView.findViewById(R.id.tvAnimalName);
            itemView.setOnClickListener(this);
        }

        @Override
        public void onClick(View view) {
            if (mClickListener != null) mClickListener.onItemClick(view, getAdapterPosition());
        }
    }

    // convenience method for getting data at click position
    public String getItem(int id) {
        return mAnimals.get(id);
    }

    // allows clicks events to be caught
    public void setClickListener(ItemClickListener itemClickListener) {
        this.mClickListener = itemClickListener;
    }

    // parent activity will implement this method to respond to click events
    public interface ItemClickListener {
        void onItemClick(View view, int position);
    }
}

মন্তব্য

  • যদিও কঠোরভাবে প্রয়োজনীয় নয়, আমি আইটেমগুলিতে ক্লিক ইভেন্টগুলি শোনার জন্য কার্যকারিতা অন্তর্ভুক্ত করেছি। এটি পুরানোতে উপলব্ধ ছিল ListViewsএবং এটি একটি সাধারণ প্রয়োজন। আপনার যদি প্রয়োজন না হয় তবে আপনি এই কোডটি সরিয়ে ফেলতে পারেন।

ক্রিয়াকলাপে রিসাইক্লারভিউ সূচনা করুন

আপনার মূল ক্রিয়াকলাপে নিম্নলিখিত কোডটি যুক্ত করুন।

MainActivity.java

public class MainActivity extends AppCompatActivity implements MyRecyclerViewAdapter.ItemClickListener {

    private MyRecyclerViewAdapter adapter;

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

        // data to populate the RecyclerView with
        ArrayList<Integer> viewColors = new ArrayList<>();
        viewColors.add(Color.BLUE);
        viewColors.add(Color.YELLOW);
        viewColors.add(Color.MAGENTA);
        viewColors.add(Color.RED);
        viewColors.add(Color.BLACK);

        ArrayList<String> animalNames = new ArrayList<>();
        animalNames.add("Horse");
        animalNames.add("Cow");
        animalNames.add("Camel");
        animalNames.add("Sheep");
        animalNames.add("Goat");

        // set up the RecyclerView
        RecyclerView recyclerView = findViewById(R.id.rvAnimals);
        LinearLayoutManager horizontalLayoutManager
                = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.HORIZONTAL, false);
        recyclerView.setLayoutManager(horizontalLayoutManager);
        adapter = new MyRecyclerViewAdapter(this, viewColors, animalNames);
        adapter.setClickListener(this);
        recyclerView.setAdapter(adapter);
    }

    @Override
    public void onItemClick(View view, int position) {
        Toast.makeText(this, "You clicked " + adapter.getItem(position) + " on item position " + position, Toast.LENGTH_SHORT).show();
    }
}

মন্তব্য

  • লক্ষ্য করুন যে ক্রিয়াকলাপটি ItemClickListenerআমাদের অ্যাডাপ্টারে আমরা সংজ্ঞায়িত করেছি তা কার্যকর করে । এটি আমাদের আইটেম ক্লিক ইভেন্টগুলিতে পরিচালনা করতে দেয় onItemClick

সমাপ্ত

এটাই. আপনার এখনই আপনার প্রকল্পটি চালানোতে সক্ষম হওয়া উচিত এবং শীর্ষে থাকা চিত্রটির অনুরূপ কিছু পাওয়া উচিত।

মন্তব্য


12

আপনি যদি এর RecyclerViewসাথে একটি ব্যবহার করতে চান তবে GridLayoutManagerঅনুভূমিক স্ক্রোলটি অর্জন করার উপায় এটি।

recyclerView.setLayoutManager(
new GridLayoutManager(recyclerView.getContext(), rows, GridLayoutManager.HORIZONTAL, false));

এটি আমার পক্ষে ভাল কাজ করে ... বেশিরভাগ কারণেই আপনি সারি সংখ্যা নির্ধারণ করতে পারেন ... এটি লিনিয়ারলআউটম্যানেজারেও এটি করা সম্ভব?
ইউজার

9

একটি অনুভূমিক তালিকাভিউ নির্মাণের চেষ্টা করতে খুব বেশি সময় নিচ্ছে। আমি এটি দুটি উপায়ে সমাধান করেছি।

1. ভিউপেজার ব্যবহার করে যার অ্যাডাপ্টার পেজারআডাপ্টার থেকে প্রসারিত।

2. উপরের মতো পুনর্ব্যবহারযোগ্য ভিউ ব্যবহার করে নিম্নলিখিত কোড হিসাবে লেআউট ম্যানেজার প্রয়োগ করা প্রয়োজন:

LinearLayoutManager layoutManager
    = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);

RecyclerView myList = (RecyclerView) findViewById(R.id.my_recycler_view);
myList.setLayoutManager(layoutManager);

6

আপনি যদি ভিউপিজার হিসাবে কাজ করতে হরাইজন্টাল রিসাইক্লার ভিউটি ব্যবহার করতে চান তবে এটি এখন LinearSnapHelperসহায়তার লাইব্রেরি সংস্করণ 24.2.0-এ যুক্ত হয়েছে যার সাহায্যে এটি সম্ভব ।

প্রথমে আপনার ক্রিয়াকলাপ / খণ্ডে পুনর্ব্যবহারযোগ্য যুক্ত করুন

<android.support.v7.widget.RecyclerView
        android:layout_below="@+id/sign_in_button"
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:id="@+id/blog_list"
        android:layout_height="match_parent">
    </android.support.v7.widget.RecyclerView>

আমার ক্ষেত্রে আমি একটি CardViewভিতরে ব্যবহার করেছিRecyclerView

blog_row.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView 

    xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_margin="15dp"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:orientation="vertical">

            <com.android.volley.toolbox.NetworkImageView
                android:id="@+id/imageBlogPost"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:adjustViewBounds="true"
                android:paddingBottom="15dp"
                android:src="@drawable/common_google_signin_btn_text_light_normal" />

            <TextView
                android:id="@+id/TitleTextView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
               android:layout_marginBottom="20dp"

                android:text="Post Title Here"
                android:textSize="16sp" />

            <TextView
                android:id="@+id/descriptionTextView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Post Description Here"
                android:paddingBottom="15dp"
                android:textSize="14sp" />
        </LinearLayout>

    </android.support.v7.widget.CardView>

আপনার ক্রিয়াকলাপ / খণ্ডে

    private RecyclerView mBlogList;




 LinearLayoutManager layoutManager
                    = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
            mBlogList = (RecyclerView) findViewById(R.id.blog_list);

            mBlogList.setHasFixedSize(true);
            mBlogList.setLayoutManager(layoutManager);

LinearSnapHelper snapHelper = new LinearSnapHelper() {
            @Override
            public int findTargetSnapPosition(RecyclerView.LayoutManager lm, int velocityX, int velocityY) {
                View centerView = findSnapView(lm);
                if (centerView == null)
                    return RecyclerView.NO_POSITION;

                int position = lm.getPosition(centerView);
                int targetPosition = -1;
                if (lm.canScrollHorizontally()) {
                    if (velocityX < 0) {
                        targetPosition = position - 1;
                    } else {
                        targetPosition = position + 1;
                    }
                }

                if (lm.canScrollVertically()) {
                    if (velocityY < 0) {
                        targetPosition = position - 1;
                    } else {
                        targetPosition = position + 1;
                    }
                }

                final int firstItem = 0;
                final int lastItem = lm.getItemCount() - 1;
                targetPosition = Math.min(lastItem, Math.max(targetPosition, firstItem));
                return targetPosition;
            }
        };
        snapHelper.attachToRecyclerView(mBlogList);

শেষ পদক্ষেপটি রিসাইক্লিউউতে অ্যাডাপ্টার সেট করা

mBlogList.setAdapter(firebaseRecyclerAdapter);

4

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

এখানে চিত্র বর্ণনা লিখুন

আপনি এই পোস্ট থেকে একটি পূর্ণ ওয়ার্কিং ডেমো ডাউনলোড করতে পারেন


2
 <HorizontalScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            >
        <android.support.v7.widget.RecyclerView
            android:id="@+id/recycler_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal"
            android:scrollbars="vertical|horizontal" />
        </HorizontalScrollView>

    import androidx.appcompat.app.AppCompatActivity;
    import android.content.Context;
    import android.content.ContextWrapper;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.os.Environment;
    import android.view.View;
    import android.widget.ImageView;
    import android.widget.Toast;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    public class MainActivity extends AppCompatActivity
     {
        ImageView mImageView1;
        Bitmap bitmap;
        String mSavedInfo;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mImageView1 = (ImageView) findViewById(R.id.image);
        }
        public Bitmap getBitmapFromURL(String src) {
            try {
                java.net.URL url = new java.net.URL(src);
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                connection.setDoInput(true);
                connection.connect();
                InputStream input = connection.getInputStream();
                Bitmap myBitmap = BitmapFactory.decodeStream(input);
                return myBitmap;
            } catch (IOException e) {
                e.printStackTrace();
                return null;
            }
        }
        public void button2(View view) {
            new DownloadImageFromTherad().execute();
        }
        private class DownloadImageFromTherad extends AsyncTask<String, Integer, String> {
            @Override
            protected String doInBackground(String... params) {
                bitmap = getBitmapFromURL("https://cdn.pixabay.com/photo/2016/08/08/09/17/avatar-1577909_960_720.png");
                return null;
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                File sdCardDirectory = Environment.getExternalStorageDirectory();
                File image = new File(sdCardDirectory, "test.png");
                boolean success = false;
                FileOutputStream outStream;
                mSavedInfo = saveToInternalStorage(bitmap);
                if (success) {
                    Toast.makeText(getApplicationContext(), "Image saved with success", Toast.LENGTH_LONG).show();
                } else {
                    Toast.makeText(getApplicationContext(), "Error during image saving" + mSavedInfo, Toast.LENGTH_LONG).show();
                }
            }
        }
        private String saveToInternalStorage(Bitmap bitmapImage) {
            ContextWrapper cw = new ContextWrapper(getApplicationContext());
            // path to /data/data/yourapp/app_data/imageDir
            File directory = cw.getDir("imageDir", Context.MODE_PRIVATE);
            File mypath = new File(directory, "profile.jpg");
            FileOutputStream fos = null;
            try {
                fos = new FileOutputStream(mypath);
                bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fos);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return directory.getAbsolutePath();
        }
        private void loadImageFromStorage(String path) {
            try {
                File f = new File(path, "profile.jpg");
                Bitmap b = BitmapFactory.decodeStream(new FileInputStream(f));
                mImageView1.setImageBitmap(b);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
        }
        public void showImage(View view) {
            loadImageFromStorage(mSavedInfo);
        }
    }

1

একটা RecyclerView উপশ্রেণী নামে হয় HorizontalGridView আপনি অনুভূমিক দিক আছে ব্যবহার করতে পারেন। উল্লম্ব দিকের জন্য উল্লম্বগ্রিডভিউ


5
হরাইজেন্টালগ্রিডভিউ এমনকি টিভি-বিহীন ডিভাইসগুলির জন্য ব্যবহার করা বোঝায়? আফিক ল্যানব্যাক লাইব্রেরিটি টিভিগুলির জন্য বোঝানো হয়েছে
এজেন্টকনপফ

2
লিনব্যাক ব্যবহার করা আপনার অ্যাপ্লিকেশনটির মিনিএসডিপি ভার্সনটিকে 17 এড়িয়ে দেবে
এমন কেউ কোথাও

1

এটি অনুভূমিক এবং উল্লম্ব উভয়ের জন্য।

RecyclerView recyclerView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test_recycler);
    recyclerView = (RecyclerView)findViewById(R.id.recyclerViewId);

    RecyclAdapter adapter = new RecyclAdapter();

    //Vertical RecyclerView
    RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
    recyclerView.setLayoutManager(mLayoutManager);

    //Horizontal RecyclerView
    //recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext(),LinearLayoutManager.HORIZONTAL,false));

    recyclerView.setAdapter(adapter);

}

1

অনুভূমিক ডায়নামিকের পুনর্ব্যবহারযোগ্য দর্শন।

পুনর্ব্যবহারযোগ্য দেখুন বাস্তবায়ন

RecyclerView musicList = findViewById(R.id.MusicList);

// RecyclerView musiclist = findViewById(R.id.MusicList1);
// RecyclerView musicLIST = findViewById(R.id.MusicList2);
LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
musicList.setLayoutManager(layoutManager);

String[] names = {"RAP", "CH SHB", "Faheem", "Anum", "Shoaib", "Laiba", "Zoki", "Komal", "Sultan","Mansoob Gull"};
musicList.setAdapter(new ProgrammingAdapter(names));'

পুনর্ব্যবহারযোগ্য দর্শনের জন্য অ্যাডাপ্টার শ্রেণি, যেখানে সেই পুনর্ব্যবহারকারীটির ধারণার জন্য একটি ভিউ ধারক রয়েছে

public class ProgrammingAdapter 
     extendsRecyclerView.Adapter<ProgrammingAdapter.programmingViewHolder> {

private String[] data;

public ProgrammingAdapter(String[] data)
{
    this.data = data;
}

@Override
public programmingViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    LayoutInflater inflater = LayoutInflater.from(parent.getContext());
    View view = inflater.inflate(R.layout.list_item_layout, parent, false);

    return new programmingViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull programmingViewHolder holder, int position) {
    String title = data[position];
    holder.textV.setText(title);
}

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

public class programmingViewHolder extends RecyclerView.ViewHolder{
    ImageView img;
    TextView textV;
    public programmingViewHolder(View itemView) {
        super(itemView);
        img =  itemView.findViewById(R.id.img);
        textV =  itemView.findViewById(R.id.textt);
    }
}


0

এটা চেষ্টা কর:

myrecyclerview.setLayoutManager(
        new LinearLayoutManager(getActivity(),
                                LinearLayoutManager.HORIZONTAL,false));
myrecyclerview.setAdapter(recyclerAdapter);

কেবলমাত্র যদি আপনি এর উপর কিছু টুকরোগুলি সহ পুনর্ব্যবহারযোগ্য ভিউ পান।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.