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