Thursday, August 6, 2015

Listview With Layout inflater /Custome list view with Image And Text


 Inflater:-
  
  • Layout Inflater is used for describe or manipulate  screen using predefined xml file .
  • If you want to customize any view/layout then you have to use layout inflater.
  • It can not use directly but we can use with the help of getLayoutInflater()  orgetSystemService(String). that provide the standard layout.
  • This class is used to instantiate layout XML file into its corresponding View objects
  • For create Layout Inflater
For Example:
            LayoutInflater lf = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
            View v = lf.inflate(R.layout.design_main_acitivty, parent, false);

       Now we implement the inflater with listview .
       For that first we create new simple android project 

Step 1:-Create Main Activity.java 



      import com.emprovantion.app
      import android.os.Bundle;
      import android.app.Activity;
      import android.app.ListActivity;
      import android.view.LayoutInflater;
      import android.view.Menu;
      import android.view.View;
      import android.view.ViewGroup;
      import android.widget.BaseAdapter;
      import android.widget.ImageView;
      import android.widget.TextView;



      public class MainActivity extends ListActivity {

      String[] names = { "ABC", "DEF", "JHI", "JKL", "MNO", "PQR", "STU" };
      String[] cities = { "Rajkot", "Surat", "Baroda", "Bombay", "Palitana", "Navsari", "Broda" };
      int[] images = { R.drawable.i1, R.drawable.i2, R.drawable.i3, R.drawable.i4, R.drawable.i5, R.drawable.i6,                                   R.drawable.i7 };

      @Override
      protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.layout_main_activity);
   
      setListAdapter(new MyAdapter());
      }
  
      class MyAdapter extends BaseAdapter
      {
                  public int getCount() { return names.length; }
                  public Object getItem(int position) {return null;}
                  public long getItemId(int position) {return 0;}

                  public View getView(int position, View convertView, ViewGroup parent) {
     
                  LayoutInflater lf = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
                  View v = lf.inflate(R.layout.design_main_acitivty, parent, false);
         
                  ImageView iv1 = (ImageView) v.findViewById(R.id.imageView1);
                  TextView tv1 = (TextView) v.findViewById(R.id.textView1);
                  TextView tv2 = (TextView) v.findViewById(R.id.textView2);
         
                  iv1.setImageResource(images[position]);
                  tv1.setText(names[position]);
                  tv2.setText(cities[position]);
         
                 return v;
        }
     
    }

}



Step 2:-Create layout_main_activity.xml File 


     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

     <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:text="Button" />

     <ListView
        android:id="@+id/android:list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/button1"
        android:layout_centerHorizontal="true" >
    </ListView>

     </RelativeLayout> 
 

Step 3:-Cretae design_main_activity.xml


      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent" >

      <ImageView
          android:id="@+id/imageView1"
          android:layout_width="50dp"
          android:layout_height="50dp"
          android:layout_alignParentLeft="true"
          android:layout_alignParentTop="true"
          android:src="@drawable/ic_launcher"
          android:layout_margin="10dp" />

      <TextView
          android:id="@+id/textView2"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignBottom="@+id/imageView1"
          android:layout_alignLeft="@+id/textView1"
          android:text="Small Text"
          android:textAppearance="?android:attr/textAppearanceSmall" />

      <TextView
          android:id="@+id/textView1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignTop="@+id/imageView1"
          android:layout_toRightOf="@+id/imageView1"
          android:text="Large Text"
          android:textAppearance="?android:attr/textAppearanceLarge" />

      </RelativeLayout> 


Output:-