With custom array adapter you can create listview with complex list item not just only string item.
for example if you have to show a list of students with name, id, and picture. you can use
custom array adapter. Below are the steps to follow :
1. Create an activity layout with name activity_listview.xml
for example if you have to show a list of students with name, id, and picture. you can use
custom array adapter. Below are the steps to follow :
1. Create an activity layout with name activity_listview.xml
<?xml version="1.0" encoding="utf-8"?> <ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent"> </ListView>2. Create an item layout to show student item with name item_student.xml.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:padding="16dp" android:layout_height="match_parent"> <ImageView android:id="@+id/imgStudent" android:layout_width="48dp" android:layout_height="48dp" android:scaleType="centerCrop"/> <RelativeLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1"> <TextView android:id="@+id/textName" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/textID" android:layout_below="@+id/textName" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout> </LinearLayout>3. create a student class with name Student.java
package com.example.myapplication.customarray; /** * Created by SONY on 14/10/2016. */ public class Student { public String name; public String id; public int picture; }4. Create a custom array adapter class with name CustomAdapter.java
package com.example.myapplication.customarray; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; import com.example.myapplication.R; import java.util.List; /** * Created by SONY on 14/10/2016. */ public class CustomAdapter extends ArrayAdapter<Student> { private List<Student> students; public CustomAdapter(Context context, List<Student> students) { super(context, 0, students); this.students = students; } @Override public View getView(int position, View convertView, ViewGroup parent){ if(convertView == null) { convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_student, parent, false); convertView.setTag(ViewHolder.createHolder(convertView)); } ViewHolder holder = (ViewHolder) convertView.getTag(); Student student = students.get(position); holder.textName.setText(student.name); holder.textID.setText(student.id); holder.imgStudent.setImageResource(student.picture); return convertView; } @Override public int getCount( ) { return students.size(); } public static class ViewHolder { public TextView textName; public TextView textID; public ImageView imgStudent; public static final ViewHolder createHolder(View view) { ViewHolder holder = new ViewHolder(); holder.textName = (TextView) view.findViewById(R.id.textName); holder.textID = (TextView) view.findViewById(R.id.textID); holder.imgStudent = (ImageView) view.findViewById(R.id.imgStudent); return holder; } } }5. Copy paste the image below to drawable folder with name ic_picture.png 6. Create activity class with name CustomActivity.java
package com.example.myapplication.customarray; import android.app.Activity; import android.os.Bundle; import android.widget.ListView; import com.example.myapplication.R; import java.util.ArrayList; /** * Created by SONY on 14/10/2016. */ public class CustomActivity extends Activity { private ListView listView; private CustomAdapter adapter; private ArrayList<Student> data = new ArrayList<Student>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_listview); listView = (ListView) findViewById(R.id.listView); adapter = new CustomAdapter(this, data); listView.setAdapter(adapter); populateListView(); } private void populateListView() { Student student1 = new Student(); student1.name = "Muhammad"; student1.id = "123455"; student1.picture = R.drawable.ic_picture; Student student2 = new Student(); student2.name = "Ali"; student2.id = "123456"; student2.picture = R.drawable.ic_picture; Student student3 = new Student(); student3.name = "Rahman"; student3.id = "123457"; student3.picture = R.drawable.ic_picture; Student student4 = new Student(); student4.name = "David"; student4.id = "123458"; student4.picture = R.drawable.ic_picture; Student student5 = new Student(); student5.name = "Roberts"; student5.id = "123459"; student5.picture = R.drawable.ic_picture; Student student6 = new Student(); student6.name = "Ismail"; student6.id = "123451"; student6.picture = R.drawable.ic_picture; data.add(student1); data.add(student2); data.add(student3); data.add(student4); data.add(student5); data.add(student6); adapter.notifyDataSetChanged(); } }6. Create AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapplication"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".customarray.CustomActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>7. After you run the app, you should see the result like this. Thank you for visiting our website. Just comment below if you have any question to ask.
No comments:
Post a Comment