Hello I\'m working on a project where I have to insert each object of type \"Person\" in an ArrayList of type \"Person\" to a Gridview in eclipse android. My intentions are to d
your adapter
public class Benildus_Adapter extends ArrayAdapter<Person> {
ArrayList<Person> list; // your person arraylist
Context context; // the activity context
int resource; // this will be your xml file
public Benildus_Adapter(Context context, int resource,ArrayList<Person> objects) {
super(context, resource, objects);
// TODO Auto-generated constructor stub
this.list = objects;
this.context = context;
this.resource = resource;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
if(list.size() == 0){
return 0;
}else{
return list.size();
}
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View child = convertView;
RecordHolder holder;
LayoutInflater inflater = ((Activity) context).getLayoutInflater(); // inflating your xml layout
if (child == null) {
child = inflater.inflate(resource, parent, false);
holder = new RecordHolder();
holder.fname = (TextView) child.findViewById(R.id.fname); // fname is the reference to a textview
holder.lname = (TextView) child.findViewById(R.id.lname); // in your xml layout file
holder.bio =(TextView) child.findViewById(R.id.bio); // you are inflating.etc
child.setTag(holder);
}else{
holder = (RecordHolder) child.getTag();
}
final Person user = list.get(position); // you can remove the final modifieer.
holder.fname.setText(user.getFName());
holder.lname.setText(user.getLName());
holder.bio.setText(user.getBiography());
holder.image.setImageBitmap(user.getImage()); // if you use string then you download the image using
// the string as url and set it to your imageview..
return child;
}
static class RecordHolder {
TextView fname,lname,bio;
ImageView image;
}
@Override
public void notifyDataSetChanged() { // you can remove this..
// TODO Auto-generated method stub
if(getCount() == 0){
//show layout or something that notifies that no list is in..
}else{
// this is to make sure that you can call notifyDataSetChanged in any place and any thread
new Handler(getContext().getMainLooper()).post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Benildus_Adapter.super.notifyDataSetChanged();
}
});
}
}
}
your person class
public class Person {
private String FName;
private String LName;
private String Biography;
private Bitmap image; // add the image too to your class, you can store the url of the image
// or save it using bitmap.. if you store the url then = String image; the load the image
// in the getview method.. any way you choose..
public String getFName() {
return FName;
}
public void setFName(String fName) {
FName = fName;
}
public String getLName() {
return LName;
}
public void setLName(String lName) {
LName = lName;
}
public String getBiography() {
return Biography;
}
public void setBiography(String biography) {
Biography = biography;
}
public Bitmap getImage() {
return image;
}
public void setImage(Bitmap image) {
this.image = image;
}
}
Edit i just forget the set adapter..
gridView = (GridView)findViewById(R.id.grid);
Benildus_Adapter bA = new Benildus_Adapter(this, R.layout.myxml,dbPersons);
gridView.setAdapter(bA);
hope it helps, let me know