In this example, you can get to know how to create a custom list view using
Here is my
ArryaAdapter
in android application development. I will create a custom header row for the list view and custom row for displaying android version image and version name. Once the row is clicked selected version name will be displayed in a
Toast
message.Here is my
listview_item_row.xml
file. Place this file into layout directory under res
folder.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageView android:id="@+id/imgIcon" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginBottom="5dp" android:layout_marginRight="15dp" android:layout_marginTop="5dp" android:gravity="center_vertical" android:src="@drawable/ic_launcher" android:contentDescription="topicIconDescription"/> <TextView android:id="@+id/txtTitle" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginBottom="5dp" android:layout_marginTop="5dp" android:gravity="center_vertical" android:textColor="#000000" android:textSize="22sp" android:textStyle="bold" /> </LinearLayout>
This is my custom
listview_header_row.xml
header row. Place this file also in same directory.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/txtHeader" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#336699" android:gravity="center_vertical" android:padding="10dp" android:text="Android Version History" android:textColor="#FFFFFF" android:textSize="22sp" android:textStyle="bold" /> </LinearLayout>
Now Create another xml file to hold the listview in same directory called
main_activity.xml
.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <ListView android:id="@+id/listView1" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout>
Now let's start cording to build up the Custom ListView Application. Upto now we have created all the necessary layouts in
res/layout
folder. Make sure you add all android version icons to the res/drawable-mdpi
folder.
I'm creating a
Once you complete all necessary files, it's time to launch the application.
AndroidVersionName
class to have version name & related version icon.
public class AndroidVersionName { public String versionName; public int versionIcon; public AndroidVersionName() { super(); } public AndroidVersionName(int img, String name) { super(); this.versionIcon = img; this.versionName = name; } }Now create a class extending
ArryaAdapter
.
import android.app.Activity; 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; public class VersionNameAdapter extends ArrayAdapter{ Context context; int layoutResourceId; AndroidVersionName data[] = null; public VersionNameAdapter(Context context, int layoutResourceId, AndroidVersionName[] data) { super(context, layoutResourceId, data); this.layoutResourceId = layoutResourceId; this.context = context; this.AndroidVersionName = data; } @Override public View getView(int position, View convertView, ViewGroup parent) { View row = convertView; VersionHolder holder = null; if (row == null) { LayoutInflater inflater = ((Activity) context).getLayoutInflater(); row = inflater.inflate(layoutResourceId, parent, false); holder = new VersionHolder(); holder.imgIcon = (ImageView) row.findViewById(R.id.imgIcon); holder.txtTitle = (TextView) row.findViewById(R.id.txtTitle); row.setTag(holder); }
Now createelse { holder = (VersionHolder) row.getTag(); } AndroidVersionName name = data[position]; holder.txtTitle.setText(name.title); holder.imgIcon.setImageResource(name.icon); return row; } static class VersionHolder { ImageView imgIcon; TextView txtTitle; } }
MainActivity.java
class to set your listview and perform Click events
on row command.
import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { private ListView listView1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); AndroidVersionName version_data[] = new AndroidVersionName [] { new AndroidVersionName (R.drawable.cupcake, "What is Android?"), new AndroidVersionName (R.drawable.donut, "Donut"), new AndroidVersionName (R.drawable.ecliar, "Ecliar"), new AndroidVersionName (R.drawable.froyo, "frozan youget"), new AndroidVersionName (R.drawable.gingerbread, "GingerBread"), new AndroidVersionName (R.drawable.honeycomb, "Honeycomb"), new AndroidVersionName (R.drawable.icecreamsandwich, "Icecreamsandwich"), new AndroidVersionName (R.drawable.jellybean, "Jellybean"), }; VersionNameAdapter adapter = new VersionNameAdapter(this, R.layout.listview_item_row, Topic_data); listView1 = (ListView) findViewById(R.id.listView1); View header = getLayoutInflater().inflate(R.layout.listview_header_row, null); listView1.addHeaderView(header); listView1.setAdapter(adapter); listView1.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView arg0, View view, int position, long id) { TextView textview = (TextView) view.findViewById(R.id.txtTitle); Toast.makeText(getApplicationContext(), "Title:" + textview.getText().toString() , Toast.LENGTH_LONG).show(); } }); }
Very Good blog nice information about array
ReplyDeleteangular certification
angularjs online training