কম্পিউটার

কিভাবে ListView এর পুনর্ব্যবহার প্রক্রিয়া Android এ কাজ করে?


এই উদাহরণটি দেখায় কিভাবে ListView এর রিসাইক্লিং মেকানিজম অ্যান্ড্রয়েডে কাজ করে।

ধাপ 1 − অ্যান্ড্রয়েড স্টুডিওতে একটি নতুন প্রকল্প তৈরি করুন, ফাইল ⇒ নতুন প্রকল্পে যান এবং একটি নতুন প্রকল্প তৈরি করতে সমস্ত প্রয়োজনীয় বিবরণ পূরণ করুন৷

ধাপ 2 − res/layout/activity_main.xml-এ নিম্নলিখিত কোড যোগ করুন।

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
   xmlns:app="https://schemas.android.com/apk/res-auto"
   xmlns:tools="https://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context=".MainActivity">
   <androidx.recyclerview.widget.RecyclerView
      android:id="@+id/card_recycler_view"
      android:scrollbars="vertical"
      android:layout_width="match_parent"
      android:layout_height="match_parent"/>
</LinearLayout>

ধাপ 3 − res/layout/card_row.xml-এ নিম্নলিখিত কোড যোগ করুন।

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView
   xmlns:android="https://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:id="@+id/card"
   android:layout_marginTop="5dp"
   android:layout_marginLeft="5dp"
   android:layout_marginRight="5dp">
   <TextView
      android:id="@+id/tv_country"
      android:layout_marginTop="10dp"
      android:layout_marginBottom="10dp"
      android:layout_gravity="center"
      android:textSize="18sp"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:textStyle="bold" />
</androidx.cardview.widget.CardView>

পদক্ষেপ 4৷ − src/MainActivity.java

-এ নিম্নলিখিত কোড যোগ করুন
package com.app.sample;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
   private ArrayList cities;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      initViews();
   }
   private void initViews(){
      RecyclerView recyclerView = (RecyclerView)findViewById(R.id.card_recycler_view);
      recyclerView.setHasFixedSize(true);
      RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
      recyclerView.setLayoutManager(layoutManager);
      cities = new ArrayList<>();
      cities.add("Mumbai");
      cities.add("Chennai");
      cities.add("Kochin");
      cities.add("Bangalore");
      cities.add("Hyderabad");
      cities.add("Amaravati");
      cities.add("Goa");
      cities.add("Trivandram");
      cities.add("Coimbatore");
      cities.add("Vellore");
      cities.add("Salem");
      cities.add("Bhubaneswar");
      cities.add("");
      cities.add("Cuttack");
      cities.add("Mysore");
      RecyclerView.Adapter adapter = new DataAdapter(cities);
      recyclerView.setAdapter(adapter);
      recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
         GestureDetector gestureDetector = new GestureDetector(getApplicationContext(), new GestureDetector.SimpleOnGestureListener(){
            @Override public boolean onSingleTapUp(MotionEvent e) {
               return true;
            }
         });
         @Override
         public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
            View child = rv.findChildViewUnder(e.getX(), e.getY());
            if(child != null && gestureDetector.onTouchEvent(e)) {
               int position = rv.getChildAdapterPosition(child);
               Toast.makeText(getApplicationContext(), (Integer) cities.get(position), Toast.LENGTH_SHORT).show();
            }
            return false;
         }
         @Override
         public void onTouchEvent(RecyclerView rv, MotionEvent e) {
         }
         @Override
         public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
         }
      });
   }
}

ধাপ 5 − src/DataAdapter.java

-এ নিম্নলিখিত কোড যোগ করুন
package com.app.sample;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder>{
      private ArrayList<String> cities;
      public DataAdapter(ArrayList<String> countries) {
         this.cities = countries;
      }
      @Override
      public DataAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
         View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.card_row, viewGroup, false);
         return new ViewHolder(view);
      }
      @Override
      public void onBindViewHolder(DataAdapter.ViewHolder viewHolder, int i) {
         viewHolder.tv_country.setText(cities.get(i));
      }
      @Override
      public int getItemCount() {
         return cities.size();
      }
      public class ViewHolder extends RecyclerView.ViewHolder{
      private TextView tv_country;
      public ViewHolder(View view) {
         super(view);
         tv_country = (TextView)view.findViewById(R.id.tv_country);
      }
   }
}

ধাপ 6 - Manifests/AndroidManifest.xml

-এ নিম্নলিখিত কোড যোগ করুন
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
   package="com.app.sample">
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:supportsRtl="true"
      android:theme="@style/AppTheme">
      <activity android:name=".MainActivity">
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      </activity>
   </application>
</manifest>

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

কিভাবে ListView এর পুনর্ব্যবহার প্রক্রিয়া Android এ কাজ করে?


  1. অ্যান্ড্রয়েড লিস্টভিউতে ফুটার কীভাবে যুক্ত করবেন?

  2. অ্যান্ড্রয়েডে আমার লিস্টভিউয়ের জন্য কাস্টম অ্যাডাপ্টার কীভাবে যুক্ত করবেন?

  3. কীভাবে অ্যান্ড্রয়েডে গতিশীলভাবে একটি বোতাম যুক্ত করবেন?

  4. একটি তালিকা ভিউতে একটি অ্যান্ড্রয়েড চেকবক্সে একটি ডাটাবেস থেকে ডেটা কীভাবে আবদ্ধ করবেন?