如何使用默认值在GridView中设置第一项,并根据JSON结果填充其余项目 [英] How to set the first item in GridView with default value and populate the rest of the items based on JSON result
本文介绍了如何使用默认值在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屋!
查看全文