Wednesday, April 4, 2012

[android-developers] customAdapter how to print out content of array in TextView.setText() of getview

Hi,

I have written a CustomAdapter to display a list of hash key+value
items as a list. But I am stuck on the line below.

label.setText(my_VALUES[0])

Class two is my CustomAdapter and I am passing it a hashMap

public MyCustomAdapter(DynamicLists dynamicLists, int row,
HashMap<String,String> data)

here I combine key+value pairs and I assign them to an array called
my_VALUES. But I don't know if this is correct?

How can I print out each KEY+VALUE pair as a seperate item in getview.
at the moment I can only use label.setText(my_VALUES[0])

Thanks

graham
package gb.org;


//lists are not checkboxes
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;


//class 1
public class DynamicLists extends ListActivity {

//class 2
public class MyCustomAdapter extends BaseAdapter {
private HashMap<String,String> mData = new
HashMap<String,String>();
private String[] mKeys;
String[] my_VALUES = new String[100];

public MyCustomAdapter(DynamicLists dynamicLists, int row,
HashMap<String,String> data){
mData = data;
mKeys = mData.keySet().toArray(new String[data.size()]);
Log.d(TAG, "INSIDE ADAPTER HELLO WORLD " + map.entrySet());


String[] array = new String[map.size()];
int count = 0;
String combined="";
for(Map.Entry<String, String> entry : map.entrySet()){
combined="A"+entry.getKey()+"B"+entry.getValue();

my_VALUES[count]=combined;
Log.d(TAG, " my_VALUES " + my_VALUES);
count++;


}


}

@Override
public View getView(int position, View convertView, ViewGroup
parent) {
// TODO Auto-generated method stub
String key = mKeys[position];
String Value = getItem(position).toString();

//do your view stuff here
Log.d(TAG, "inside getview ");
View row=convertView;

if (row==null){
LayoutInflater inflater=getLayoutInflater();
row=inflater.inflate(R.layout.row, null);
}

TextView label =(TextView)row.findViewById(R.id.blocked);
label.setText(my_VALUES[0]); //printing out the last value

return row;

}
@Override
public int getCount() {

// TODO Auto-generated method stub
return mData.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return mData.get(mKeys[position]);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}


} //end of class 2

private static final String TAG = "Example";


//class 1


public static HashMap<String, String> map = new HashMap<String,
String>();

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//tie data to list, call constructor MyCustomAdapter
//populate the list. ArrayAdapter takes current class, layout
and array
map.put("year", "Apple");
map.put("make", "Mango");
map.put("model", "Grape");
map.put("style", "Orange");
map.put("series", "Peach");
Log.d(TAG, "HELLO WORLD " + map.entrySet());
//link to my adapter
setListAdapter(new MyCustomAdapter(DynamicLists.this,
R.layout.row, map));

}


@Override
protected void onListItemClick(ListView l, View v, int position,
long id) {
// TODO Auto-generated method stub
//super.onListItemClick(l, v, position, id);
String selection = l.getItemAtPosition(position).toString();
Toast.makeText(this, selection, Toast.LENGTH_LONG).show();


}


} //end of class 1


--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

No comments:

Post a Comment