如何使用默认值在GridView中设置第一项,并根据JSON结果填充其余项目 [英] How to set the first item in GridView with default value and populate the rest of the items based on JSON result

查看:181
本文介绍了如何使用默认值在GridView中设置第一项,并根据JSON结果填充其余项目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好,我想设置我的GridView的第一个项目的默认值,并相应地填充项目的其余部分(基于JSON结果)



我的代码由2个类组成
1. MainActivity
2. GridView适配器

以下是我的GridAdapter的代码

  public class ContactGridAdapter extends ArrayAdapter< Person> {
***一些初始化***

public ContactGridAdapter(上下文上下文,ArrayList< Person>值){
super(context,R.layout.grid_item_text);
mContext = context;
mList = values;
}

@Override
public int getCount(){
// TODO自动生成的方法存根
返回mList.size();

$ b @Override
public Person getItem(int position){
// TODO自动生成的方法存根
return mList.get(position) ;
}

@Override
public long getItemId(int position){
// TODO自动生成的方法存根
return 0;

$ b @Override
public View getView(int position,View convertView,ViewGroup parent){
// TODO自动生成的方法存根

LayoutInflater inflater =(LayoutInflater)mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

查看视图;

if(convertView == null){
view = new View(mContext);
view = inflater.inflate(R.layout.grid_item_text,null);

TextView personName =(TextView)view.findViewById(R.id.textItem);
ImageView personThumb =(ImageView)view.findViewById(R.id.iconItem);

//如果得到结果
if(mList.size()!= 0){
/ *初始化图片* /
BitmapFactory.Options bmOptions;
bmOptions = new BitmapFactory.Options();
bmOptions.inSampleSize = 1;

/ *
位图bmpThumb = loadBitmap(mList.get(position).accId,bmOptions,IMAGE_THUMB);

if(bmpThumb!= null){
ImageHelper ih = new ImageHelper();
bmpThumb = ih.getRoundedCornerBitmap(bmpThumb,10);
personThumb.setImageBitmap(bmpThumb);
} else {
personThumb.setImageResource(mThumbs);
}
* /

personThumb.setImageResource(mThumbs);
personName.setText(mList.get(position).fullName.toString());
} else {
personThumb.setImageResource(mThumbs);
personName.setText(添加好友);
}



} else {
view =(View)convertView;
}
返回视图;
}

摘自我的MainActivity

  protected void onCreate(Bundle savedInstanceState){
private GridView gridView;
gridView =(GridView)findViewById(R.id.thumb_grid_view);
getFriends();
}

private void getFriends(){
RetrieveFriendList task = new RetrieveFriendList();
task.execute();
}

private class RetrieveFriendList extends AsyncTask< String,Void,ArrayList< Person>> {

@Override
protected ArrayList< Person> doInBackground(String ... params){
blah ...

return mFriendList;

$ b @Override
protected void onPostExecute(final ArrayList< Person> result){
if(result!= null){
gridView.setAdapter (new ContactGridAdapter(getApplicationContext(),result));
}
}
}

然而这不起作用我打算。我应该从MainActivity或从Adapter中填充默认值吗?

解决方案

试试这样做:

  @Override 
public View getView(int position,View convertView,ViewGroup parent){
// TODO自动生成的方法存根

LayoutInflater inflater =(LayoutInflater)mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

查看视图;

if(position == 0)
//填充默认项目
else
//从json填充
if(convertView == null){
view = new View(mContext);
view = inflater.inflate(R.layout.grid_item_text,null);

TextView personName =(TextView)view.findViewById(R.id.textItem);
ImageView personThumb =(ImageView)view.findViewById(R.id.iconItem);

//如果得到结果
if(mList.size()!= 0){
/ *初始化图片* /
BitmapFactory.Options bmOptions;
bmOptions = new BitmapFactory.Options();
bmOptions.inSampleSize = 1;

/ *
位图bmpThumb = loadBitmap(mList.get(position).accId,bmOptions,IMAGE_THUMB);

if(bmpThumb!= null){
ImageHelper ih = new ImageHelper();
bmpThumb = ih.getRoundedCornerBitmap(bmpThumb,10);
personThumb.setImageBitmap(bmpThumb);
} else {
personThumb.setImageResource(mThumbs);
}
* /

personThumb.setImageResource(mThumbs);
personName.setText(mList.get(position).fullName.toString());
} else {
personThumb.setImageResource(mThumbs);
personName.setText(添加好友);
}



} else {
view =(View)convertView;
}
返回视图;

}


Hi i would like to set the first item of my GridView with a default value, and populate the rest of the item accordingly (based on JSON result)

My code consist of 2 classes 1. MainActivity 2. GridView Adapter

Here is the code for my GridAdapter

public class ContactGridAdapter extends ArrayAdapter<Person> {
*** SOME INITIALIZATION ***

public ContactGridAdapter(Context context, ArrayList<Person> values){
    super(context, R.layout.grid_item_text);
    mContext = context;
    mList = values;
}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return mList.size();
}

@Override
public Person getItem(int position) {
    // TODO Auto-generated method stub
    return mList.get(position);
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub

    LayoutInflater inflater = (LayoutInflater) mContext
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    View view;

    if(convertView == null){
        view = new View(mContext);
        view = inflater.inflate(R.layout.grid_item_text, null);

        TextView personName = (TextView) view.findViewById(R.id.textItem);
        ImageView personThumb = (ImageView) view.findViewById(R.id.iconItem);

        // IF HAVE RESULT
        if(mList.size() != 0){
            /* INITIALIZES PHOTO */
            BitmapFactory.Options bmOptions;
            bmOptions = new BitmapFactory.Options();
            bmOptions.inSampleSize = 1;

            /*
            Bitmap bmpThumb = loadBitmap(mList.get(position).accId, bmOptions, IMAGE_THUMB);

            if(bmpThumb != null){
                ImageHelper ih = new ImageHelper();
                bmpThumb = ih.getRoundedCornerBitmap(bmpThumb, 10);
                personThumb.setImageBitmap(bmpThumb);
            }else{
                personThumb.setImageResource(mThumbs);
            }
            */

            personThumb.setImageResource(mThumbs);
            personName.setText(mList.get(position).fullName.toString());
        }else{
            personThumb.setImageResource(mThumbs);
            personName.setText("Add Friends");
        }



    }else{
        view = (View) convertView;
    }
    return view;
}

Excerpt from my MainActivity

protected void onCreate(Bundle savedInstanceState) {
private GridView gridView;
gridView = (GridView) findViewById(R.id.thumb_grid_view);
getFriends();
}

private void getFriends(){
    RetrieveFriendList task = new RetrieveFriendList();
    task.execute();
}

private class RetrieveFriendList extends AsyncTask<String, Void, ArrayList<Person>> {

        @Override
        protected ArrayList<Person> doInBackground(String... params) {
blah...

            return mFriendList;
        }

        @Override
        protected void onPostExecute(final ArrayList<Person> result) {          
            if(result != null){
                gridView.setAdapter(new ContactGridAdapter(getApplicationContext(), result));
            }
        }
    }

This however does not work as i intended. Should i populate the default value from MainActivity or from within the Adapter?

解决方案

Try doing this:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub

LayoutInflater inflater = (LayoutInflater) mContext
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View view;

if(position == 0)
// Populate default item
else
// Populate from json
if(convertView == null){
    view = new View(mContext);
    view = inflater.inflate(R.layout.grid_item_text, null);

    TextView personName = (TextView) view.findViewById(R.id.textItem);
    ImageView personThumb = (ImageView) view.findViewById(R.id.iconItem);

    // IF HAVE RESULT
    if(mList.size() != 0){
        /* INITIALIZES PHOTO */
        BitmapFactory.Options bmOptions;
        bmOptions = new BitmapFactory.Options();
        bmOptions.inSampleSize = 1;

        /*
        Bitmap bmpThumb = loadBitmap(mList.get(position).accId, bmOptions, IMAGE_THUMB);

        if(bmpThumb != null){
            ImageHelper ih = new ImageHelper();
            bmpThumb = ih.getRoundedCornerBitmap(bmpThumb, 10);
            personThumb.setImageBitmap(bmpThumb);
        }else{
            personThumb.setImageResource(mThumbs);
        }
        */

        personThumb.setImageResource(mThumbs);
        personName.setText(mList.get(position).fullName.toString());
    }else{
        personThumb.setImageResource(mThumbs);
        personName.setText("Add Friends");
    }



}else{
    view = (View) convertView;
}
return view;

}

这篇关于如何使用默认值在GridView中设置第一项,并根据JSON结果填充其余项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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