লিস্টভিউ উদাহরণে যাওয়ার আগে, আমাদের লিস্টভিউ সম্পর্কে জানা উচিত, লিস্টভিউ হল অ্যারেলিস্ট, তালিকা বা যেকোনো ডাটাবেস থেকে নেওয়া আইটেমগুলির একটি সংগ্রহ। লিস্টভিউ-এর বেশিরভাগ ব্যবহার হল উল্লম্ব বিন্যাসে আইটেমগুলির একটি সংগ্রহ, আমরা উপরে/নীচে স্ক্রোল করতে পারি এবং যেকোনো আইটেমে ক্লিক করতে পারি।
কাস্টম লিস্টভিউ কি?
কাস্টম লিস্টভিউ কাস্টম অ্যাডাপ্টারের উপর ভিত্তি করে কাজ করে। এই কাস্টম অ্যাডাপ্টারে আমরা কাস্টম অবজেক্ট পাস করতে পারি। আমরা নীচের দেখানো হিসাবে লিস্টভিউতে বিষয় ডেটা পাস করছি -
ধাপ 1 − অ্যান্ড্রয়েড স্টুডিওতে একটি নতুন প্রকল্প তৈরি করুন, ফাইল ⇒ নতুন প্রকল্পে যান এবং একটি নতুন প্রকল্প তৈরি করতে সমস্ত প্রয়োজনীয় বিবরণ পূরণ করুন৷
ধাপ 2 − res/layout/activity_main.xml-এ নিম্নলিখিত কোড যোগ করুন।
<?xml version = "1.0" encoding = "utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android = "https://schemas.android.com/apk/res/android" xmlns:tools = "https://schemas.android.com/tools" android:layout_width = "match_parent" android:layout_height = "match_parent"> <LinearLayout android:layout_width = "match_parent" android:layout_height = "match_parent" android:orientation = "vertical"> <ListView android:id = "@+id/list" android:layout_width = "wrap_content" android:layout_height = "match_parent" android:divider = "#000" android:dividerHeight = "1dp" android:footerDividersEnabled = "false" android:headerDividersEnabled = "false"/> </LinearLayout> </android.support.constraint.ConstraintLayout>
উপরের activity_main.xml-এ, আমরা একটি লিস্টভিউ ঘোষণা করেছি এবং নিচের মত বিভাজক যোগ করেছি।
<ListView android:id = "@+id/list" android:layout_width = "wrap_content" android:layout_height = "match_parent" android:divider = "#000" android:dividerHeight = "1dp" android:footerDividersEnabled = "false" android:headerDividersEnabled = "false" />
ধাপ 3 − src/MainActivity.java
-এ নিম্নলিখিত কোড যোগ করুনimport android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.ListView; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final ListView list = findViewById(R.id.list); ArrayList<SubjectData> arrayList = new ArrayList<SubjectData>(); arrayList.add(new SubjectData("JAVA", "https://www.tutorialspoint.com/java/", "https://www.tutorialspoint.com/java/images/java-mini-logo.jpg")); arrayList.add(new SubjectData("Python", "https://www.tutorialspoint.com/python/", "https://www.tutorialspoint.com/python/images/python-mini.jpg")); arrayList.add(new SubjectData("Javascript", "https://www.tutorialspoint.com/javascript/", "https://www.tutorialspoint.com/javascript/images/javascript-mini-logo.jpg")); arrayList.add(new SubjectData("Cprogramming", "https://www.tutorialspoint.com/cprogramming/", "https://www.tutorialspoint.com/cprogramming/images/c-mini-logo.jpg")); arrayList.add(new SubjectData("Cplusplus", "https://www.tutorialspoint.com/cplusplus/", "https://www.tutorialspoint.com/cplusplus/images/cpp-mini-logo.jpg")); arrayList.add(new SubjectData("Android", "https://www.tutorialspoint.com/android/", "https://www.tutorialspoint.com/android/images/android-mini-logo.jpg")); CustomAdapter customAdapter = new CustomAdapter(this, arrayList); list.setAdapter(customAdapter); } }
মেইন অ্যাক্টিভিটিতে, আমরা কাস্টমঅ্যাডাপ্টার ঘোষণা করেছি এবং নিচের মত সাবজেক্টডেটা পাস করেছি -
CustomAdapter customAdapter = new CustomAdapter(this, arrayList); list.setAdapter(customAdapter);
পদক্ষেপ 4৷ − একটি CustomAdapter ক্লাস তৈরি করুন src/ CustomAdapter.java এ নিম্নলিখিত কোড যোগ করুন
import android.content.Context; import android.database.DataSetObserver; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.ListAdapter; import android.widget.TextView; import com.squareup.picasso.Picasso; import java.util.ArrayList; class CustomAdapter implements ListAdapter { ArrayList<SubjectData> arrayList; Context context; public CustomAdapter(Context context, ArrayList<SubjectData> arrayList) { this.arrayList=arrayList; this.context=context; } @Override public boolean areAllItemsEnabled() { return false; } @Override public boolean isEnabled(int position) { return true; } @Override public void registerDataSetObserver(DataSetObserver observer) { } @Override public void unregisterDataSetObserver(DataSetObserver observer) { } @Override public int getCount() { return arrayList.size(); } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } @Override public boolean hasStableIds() { return false; } @Override public View getView(int position, View convertView, ViewGroup parent) { SubjectData subjectData=arrayList.get(position); if(convertView==null) { LayoutInflater layoutInflater = LayoutInflater.from(context); convertView=layoutInflater.inflate(R.layout.list_row, null); convertView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); TextView tittle=convertView.findViewById(R.id.title); ImageView imag=convertView.findViewById(R.id.list_image); tittle.setText(subjectData.SubjectName); Picasso.with(context) .load(subjectData.Image) .into(imag); } return convertView; } @Override public int getItemViewType(int position) { return position; } @Override public int getViewTypeCount() { return arrayList.size(); } @Override public boolean isEmpty() { return false; } }
ধাপ 5 − একটি SubjectData ক্লাস তৈরি করুন, নিম্নলিখিত কোডটি src/ SubjectData.java এ যোগ করুন
class SubjectData { String SubjectName; String Link; String Image; public SubjectData(String subjectName, String link, String image) { this.SubjectName = subjectName; this.Link = link; this.Image = image; } }
ধাপ 6 - CustomAdapter ক্লাসে আমরা ইন্টারনেট সোর্স ইমেজ দেখিয়েছি। ইন্টারনেট সোর্স ইমেজ দেখাতে. আমরা নীচে দেখানো হিসাবে পিকাসো লাইব্রেরি যোগ করেছি।
Picasso.with(context) .load(subjectData.Image) .into(imag);
পদক্ষেপ 7 − পিকাসো লাইব্রেরি বাস্তবায়নের জন্য, আমাদের পিকাসো লাইব্রেরি গ্রেডে যুক্ত করতে হবে যেমন নীচে দেখানো হয়েছে
apply plugin: 'com.android.application' android { compileSdkVersion 28 defaultConfig { applicationId "com.example.andy.myapplication" minSdkVersion 15 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' testImplementation 'junit:junit:4.12' implementation 'com.squareup.picasso:picasso:2.5.1' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' }
ধাপ 8 − ইন্টারনেট তথ্য অ্যাক্সেস করার জন্য, আমাদেরকে নীচে দেখানো ফাইলের মতো ম্যানিফেস্ট করার জন্য ইন্টারনেটের অনুমতি দিতে হবে।
<?xml version = "1.0" encoding = "utf-8"?> <manifest xmlns:android = "https://schemas.android.com/apk/res/android" package = "com.example.andy.myapplication"> <uses-permission android:name = "android.permission.INTERNET"/> <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>
আপনার অ্যাপ্লিকেশন চালানোর চেষ্টা করা যাক. আমি ধরে নিচ্ছি আপনি আপনার কম্পিউটারের সাথে আপনার আসল অ্যান্ড্রয়েড মোবাইল ডিভাইসটি সংযুক্ত করেছেন৷ অ্যান্ড্রয়েড স্টুডিও থেকে অ্যাপটি চালানোর জন্য, আপনার প্রোজেক্টের অ্যাক্টিভিটি ফাইলগুলির একটি খুলুন এবং রান এ ক্লিক করুন টুলবার থেকে আইকন। একটি বিকল্প হিসাবে আপনার মোবাইল ডিভাইসটি নির্বাচন করুন এবং তারপরে আপনার মোবাইল ডিভাইসটি পরীক্ষা করুন যা আপনার ডিফল্ট স্ক্রীন প্রদর্শন করবে৷