Thursday, July 26, 2012

ListView in Android

We can create listview in two ways.


1. The activity extending from ListActivity

 

 MainActivity  extend ListActivity

public class MainActivity extends ListActivity {
...
}

 

public class ListAct extends ListActivity {
  TextView selection;
  private static final String[] items={"Apple", "Bat", "Cat",
          "Dog", "Eagle",
          "Fan", "Goat", "Hut", "Iron", "Jackel",
          "Kitten", "Lion", "Mat", "Nut"};
 
  @Override
  public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.main);
    setListAdapter(new IconicAdapter());
    selection=(TextView)findViewById(R.id.selection);
  }
 
  public void onListItemClick(ListView parent, View v,
                              int position, long id) {
    selection.setText(items[position]);
  }
 

Create  the list adapter
//list of array strings which will serve  as LIST ITEMS
 

  class IconicAdapter extends ArrayAdapter<String> {
    IconicAdapter() {
      super(ListAct.this, R.layout.row, R.id.label, items);
    }
   
    public View getView(int position, View convertView,
                        ViewGroup parent) {
      View row=super.getView(position, convertView, parent);
      ImageView icon=(ImageView)row.findViewById(R.id.icon);
       
      if (items[position].length()>4) {
        icon.setImageResource(R.drawable.remove);
      }
      else {
        icon.setImageResource(R.drawable.Yes);
      }
     
      return(row);
    }
  }
}
 

main.xml

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent" >
  <TextView
    android:id="@+id/selection"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"/>
  <ListView
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:drawSelectorOnTop="false"
    />
</LinearLayout>
 

 row.xml

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:orientation="horizontal"
>
  <ImageView
    android:id="@+id/icon"
    android:padding="2dip"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/yes"
  />
  <TextView
    android:id="@+id/label"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="40sp"
  />
</LinearLayout>
 

2.extends from Activity

 

public class Example extends Activity {

    private List<Example> exampleList= new ArrayList<Example>();
    private List<String> list;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       
        // Set the View layer
        setContentView(R.layout.listview);
        setTitle("ExampleListView");
       
     

       
           
       
    

        // Create Parser for raw/example.xml
        ExampleParser exampleParser = new ExampleParser();
       
     
           
                InputStream inputStream = null;
                try {
                    inputStream = new FileInputStream(directory.getPath()+
                             "/example.xml");
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
           
        InputStream inputStream = getResources().openRawResource(
                R.raw.example);       
       
        // Parse the inputstream
        countryParser.parse(inputStream);

        // Get Countries
        List<Country> exampleList = exampleParser.getList();
       
       
        // Create a customized ArrayAdapter
        ExampleArrayAdapter adapter = new ExampleArrayAdapter(
                getApplicationContext(), R.layout.example_listitem, exampleList);
       
        // Get reference to ListView holder
        ListView lv = (ListView) this.findViewById(R.id.exampleLV);
       
        // Set the ListView adapter
        lv.setAdapter(adapter);
        lv.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {
                // TODO Auto-generated method stub
                /*
                Object fruit=this.getListAdapter().getItem(position);
                Object fruitid=this.getListAdapter().getItemId(position);*/
                 addItem(arg1);
            }

            public void addItem(View v) {
                // TODO Auto-generated method stub
                try{
                    LinearLayout layout = (LinearLayout) v;
                String name_example = ((TextView) layout.findViewById(R.id.name_example)).getText()
                        + "";
                String example_abbrev = ((TextView) layout.findViewById(R.id.example_abbrev))
                        .getText() + "";
               
               

               

                try {
                    showItem(name_example, example_abbrev);
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                }catch(Exception e){}
               
            }

            public void showItem(String name_example, String example_abbrev) {
                // TODO Auto-generated method stub
                try {
                Intent in= new Intent(ExampleAct.this,ItemDetails.class);
               
                   
                    //Intent in = new Intent(this, ItemDetails.class);
                    //Intent in= new Intent(this,ItemDetails.class);
                    //Intent in = new Intent(this, ItemDetails.class);
                   
                  startActivity(in);
                   
                } catch (Exception e) {
                    GpsLogs.ExceptionLog("Ex " + e);
                }   
            }
        });
            }  }
   
    in raw
    example.xml

<?xml version="1.0" encoding="utf-8"?>
<example>
        <name name="Ameerpet" abbreviation="au" region="Ap" />
        <name name="Begumpet" abbreviation="at" region="Hyderabad" />
        <name name="Chikkadapalli" abbreviation="be" region="Hyderabad" />
        <name name="Dabirpura" abbreviation="br" region="Secbad" />
        <name name="Ecil" abbreviation="ca" region="Secbad" />
        <name name="Falaknuma" abbreviation="cn" region="Hyderabad" />
        <name name="Gunfoundry" abbreviation="dk" region="Europe" />
        <name name="Hayat nagar" abbreviation="fr" region="Europe" />
        <name name="India" abbreviation="de" region="Europe" />
        <name name="Jammu" abbreviation="hk" region="Asia" />
        <name name="Kurnool" abbreviation="in" region="Asia" />
        <name name="Lucknow" abbreviation="id" region="Asia" />
        <name name="masabtank" abbreviation="it" region="Europe" />
        <name name="Noida" abbreviation="kr" region="Asia" />
        <name name="Ongole" abbreviation="nl" region="Europe" />
        <name name="Parchur" abbreviation="no" region="Europe" />
        <name name="Quthbullapur" abbreviation="pt" region="Europe" />
        <name name="Raipur" abbreviation="sg" region="Asia" />
        <name name="Shamlal" abbreviation="es" region="Europe" />
        <name name="Timmapur" abbreviation="se" region="Europe" />
        <name name="Usa" abbreviation="ch" region="Europe" />
       
        <name name="Others" abbreviation="uk" region="Europe" />
        <name name="Other cities" abbreviation="us" region="N. America" />
</example>


  Listview item repeating 50 times with increasing order


public class MainActivity extends Activity
{
    private ListView myList;
    
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        
        ArrayList<String> list = new ArrayList<String>();
 // 50 times repeat
        for (int i = 0; i < 50; i++){
            list.add("Blog" + i);
        }

        myList = (ListView)findViewById(R.id.list);

      
      
 
        myList.setAdapter(new MyCustomAdapter(MainActivity.this,list));


    }
}


public class MyCustomAdapter  extends BaseAdapter {
    private ArrayList<String> mListItems;
    private LayoutInflater mLayoutInflater;

    public MyCustomAdapter(Context context, ArrayList<String> arrayList){

        mListItems = arrayList;

        //get the layout inflater
        mLayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    public int getCount() {
        //getCount() represents how many items are in the list
        return mListItems.size();
    }

   
        //get the data of an item from a specific position
        //i represents the position of the item in the list
    public Object getItem(int i) {
        return null;
    }

   
        //get the position id of the item from the list
    public long getItemId(int i) {
        return 0;
    }

    public View getView(int position, View view, ViewGroup viewGroup) {

        //check to see if the reused view is null or not, if is not null then reuse it
        if (view == null) {
            view = mLayoutInflater.inflate(R.layout.list_item, null);
        }

        //get the string item from the position "position" from array list to put it on the TextView
        String stringItem = mListItems.get(position);
        if (stringItem != null) {

            TextView itemName = (TextView) view.findViewById(R.id.list_item_text_view);

            if (itemName != null) {
                //set the item name on the TextView
                itemName.setText(stringItem);
            }
        }

        return view;

    }
}


activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
        >
    <ListView android:id="@+id/list"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:transcriptMode="alwaysScroll"
              android:cacheColorHint="#00000000"
              android:listSelector="@android:color/transparent"/>
</LinearLayout>

list_item.xml


<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/list_item"
        android:gravity="center_vertical">


    <TextView android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:id="@+id/list_item_text_view"
              android:textSize="20sp"
              android:padding="10dp"
              android:layout_marginLeft="5dp"/>

</LinearLayout>



0 comments:

Post a Comment