Simple Adapter & Hashmap

Web Hosting
In this tutorial, I will show you how to use hashmap and simple adapter. See output below!



Here's the activity_main.xml codes below.

<RelativeLayout 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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <ListView
        android:id="@+id/lv_sample"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" >

    </ListView>

</RelativeLayout>

Here's the content.xml codes below.

<?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/tv_content"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#000000"
        android:text="Content" />

</LinearLayout>


Actually I have 3 ways here to output that, using ArrayAdapter, SimpleAdapter, & ListAdapter. See codes below.


Using Simple Adapter

package com.example.arrayadapter;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

ListView lv_sample;
Adapter adapters;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initializeVars();
ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String,String>>();
String[] values = new String[] { "Android List View", 
                "Adapter implementation",
                "Simple List View In Android",
                "Create List View Android", 
                "Android Example", 
                "List View Source Code", 
                "List View Array Adapter", 
                "Android Example List View" 
               };
for(int x=0; x<=7; x++){
HashMap<String, String> map = new HashMap<String, String>();
map.put("key", values[x]);
list.add(map);
}
adapters = new Adapter(getApplicationContext(), list, R.layout.content, 
        new String[] { "key" },
                new int[] { R.id.tv_content});
  // Define a new Adapter
        // First parameter - Context
        // Second parameter - Layout for the row
        // Third parameter - ID of the TextView to which the data is written
        // Forth - the Array of data

        //ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
        //  R.layout.content, R.id.tv_content, values);s
        
        lv_sample.setAdapter(adapters);
        
        lv_sample.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long arg3) {
// TODO Auto-generated method stub
ListView lv = (ListView) arg0;
                TextView key=(TextView)arg0.getChildAt(position-lv.getFirstVisiblePosition()).findViewById(R.id.tv_content);
// Show Alert 
                Toast.makeText(getApplicationContext(), key.getText().toString() , Toast.LENGTH_LONG)
                  .show();
}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void initializeVars(){
lv_sample = (ListView)findViewById(R.id.lv_sample);
}

}

class Adapter extends SimpleAdapter{

private Context mcontext;
public Adapter(Context context, List<? extends Map<String, ?>> data,
int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
// TODO Auto-generated constructor stub
mcontext = context;
}
@SuppressWarnings("unchecked")
@Override
   public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater object = (LayoutInflater)mcontext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
      if (convertView == null) 
      {
               convertView = object.inflate(R.layout.content,
                      null);
          }

          HashMap<String, String> data = (HashMap<String, String>) getItem(position);
          
          
          ((TextView) convertView.findViewById(R.id.tv_content)).setText((String) data.get("key"));
          return convertView;
}

}


Using ListAdapter


package com.example.arrayadapter;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

ListView lv_sample;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initializeVars();
ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String,String>>();
String[] values = new String[] { "Android List View", 
                "Adapter implementation",
                "Simple List View In Android",
                "Create List View Android", 
                "Android Example", 
                "List View Source Code", 
                "List View Array Adapter", 
                "Android Example List View" 
               };
for(int x=0; x<=7; x++){
HashMap<String, String> map = new HashMap<String, String>();
map.put("key", values[x]);
list.add(map);
}
ListAdapter adapters = new SimpleAdapter(getApplicationContext(), list, R.layout.content, 
        new String[] { "key" },
                new int[] { R.id.tv_content});
  // Define a new Adapter
        // First parameter - Context
        // Second parameter - Layout for the row
        // Third parameter - ID of the TextView to which the data is written
        // Forth - the Array of data

        //ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
        //  R.layout.content, R.id.tv_content, values);s
        
        lv_sample.setAdapter(adapters);
        
        lv_sample.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long arg3) {
// TODO Auto-generated method stub
ListView lv = (ListView) arg0;
                TextView key=(TextView)arg0.getChildAt(position-lv.getFirstVisiblePosition()).findViewById(R.id.tv_content);
// Show Alert 
                Toast.makeText(getApplicationContext(), key.getText().toString() , Toast.LENGTH_LONG)
                  .show();
}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void initializeVars(){
lv_sample = (ListView)findViewById(R.id.lv_sample);
}

}



Using ArrayAdapter

package com.example.arrayadapter;

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.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity {

ListView lv_sample;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initializeVars();
String[] values = new String[] { "Android List View", 
                "Adapter implementation",
                "Simple List View In Android",
                "Create List View Android", 
                "Android Example", 
                "List View Source Code", 
                "List View Array Adapter", 
                "Android Example List View" 
               };
  // Define a new Adapter
           // First parameter - Context
           // Second parameter - Layout for the row
           // Third parameter - ID of the TextView to which the data is written
           // Forth - the Array of data

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
          R.layout.content, R.id.tv_content, values);
        
        lv_sample.setAdapter(adapter);
        
        lv_sample.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long arg3) {
// TODO Auto-generated method stub
int itemPosition = position;
String itemValue = (String)lv_sample.getItemAtPosition(itemPosition);
// Show Alert 
                Toast.makeText(getApplicationContext(),
                  "Position :"+itemPosition+"  ListItem : " +itemValue , Toast.LENGTH_LONG)
                  .show();
}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void initializeVars(){
lv_sample = (ListView)findViewById(R.id.lv_sample);
}

}


Web Hosting
That's it, I hope this simple tutorial may help you a lot. Happy Coding!



5 comments:

  1. was searching all around for something like this,so happy you gave it three ways to do it.Thanks a ton

    ReplyDelete
  2. can u plz post dynamic listview with hashmap in android

    ReplyDelete
  3. It's helpful for me very much. Thank you a lot.

    ReplyDelete
  4. It's helpful for me very much.Thank you a lot.

    ReplyDelete