添加的ArrayList对象的GridView Android中 [英] Adding ArrayList Objects to GridView in Android

查看:143
本文介绍了添加的ArrayList对象的GridView Android中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好我工作的一个项目,我必须在类型为人到GridView在eclipse的android一个ArrayList插入式人,每一个对象。我的意图是随着人的姓名(类似Instagram的)显示图片。这是我已经试过到目前为止,但是这似乎并没有工作,我希望它和难以理解。

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 display a picture along with the Person's name (similar to Instagram). Here's what I have tried so far but this doesn't seem to work as I want it to and hard to understand.

不要亚勒有什么更好的办法呢?

Do yall have any better solutions?

ArrayList<Person> dbPersons = dop.getPersons(dop); //This is where I populate my list
int[] imageId = {
            R.drawable.image1,
            R.drawable.image2,
            R.drawable.image3
    };

            gridView = (GridView)findViewById(R.id.grid);
            gridView.setAdapter(new function.CustomGrid(this, dbPersons, imageId));
            gridView.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
                    // TODO Auto-generated method stub

                }

            });

我一个人的类一般包括:

My Person's class generally contains:

private String FName;
private String LName;
private String Biography;

反正我不想轰炸这个职位和我的错误的code,因为我在寻找一个更清洁,更好的选择。我只是想显示的名称为GridView控件项目的名称和它下面的图片,并在ArrayList中的其余对象做同样的。能否请你帮我出球员:)

Anyway I didn't want to bombard this post with my faulty code since I'm looking for a cleaner and better alternative. I just want to display the name as the gridview item's title and the picture below it and do the same for the rest of the objects in the arraylist. Could you please help me out guys :)

推荐答案

适配器

 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();
            }
        });
    }
}

} 

您的Person类

 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

这篇关于添加的ArrayList对象的GridView Android中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆