Java 如何使用默认值设置GridView中的第一项,并基于JSON结果填充其余项
嗨,我想用默认值设置GridView的第一项,并相应地填充该项的其余部分(基于JSON结果) 我的代码由两个类组成 1.主要活动 2.GridView适配器 下面是我的GridAdapter的代码Java 如何使用默认值设置GridView中的第一项,并基于JSON结果填充其余项,java,android,gridview,Java,Android,Gridview,嗨,我想用默认值设置GridView的第一项,并相应地填充该项的其余部分(基于JSON结果) 我的代码由两个类组成 1.主要活动 2.GridView适配器 下面是我的GridAdapter的代码 public class ContactGridAdapter extends ArrayAdapter<Person> { *** SOME INITIALIZATION *** public ContactGridAdapter(Context context, ArrayList&
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;
}
公共类ContactGridAdapter扩展了ArrayAdapter{
***一些初始化***
公共ContactGridAdapter(上下文、ArrayList值){
超级(上下文、右布局、网格项和文本);
mContext=上下文;
mList=数值;
}
@凌驾
public int getCount(){
//TODO自动生成的方法存根
返回mList.size();
}
@凌驾
公众人物getItem(内部职位){
//TODO自动生成的方法存根
返回mList.get(位置);
}
@凌驾
公共长getItemId(int位置){
//TODO自动生成的方法存根
返回0;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
//TODO自动生成的方法存根
LayoutFlater充气器=(LayoutFlater)mContext
.getSystemService(上下文布局\充气机\服务);
视图;
if(convertView==null){
视图=新视图(mContext);
视图=充气机。充气(R.layout.grid\u item\u text,空);
TextView personName=(TextView)view.findViewById(R.id.textItem);
ImageView personTumb=(ImageView)view.findViewById(R.id.iconItem);
//如果有结果
如果(mList.size()!=0){
/*初始化照片*/
选项bmOptions;
bmOptions=新的BitmapFactory.Options();
bmOptions.inSampleSize=1;
/*
位图bmpThumb=加载位图(mList.get(position).accId、bmOptions、IMAGE_THUMB);
if(bmpThumb!=null){
ImageHelper ih=新的ImageHelper();
bmpThumb=ih.getRoundedCornerBitmap(bmpThumb,10);
personThumb.setImageBitmap(bmpThumb);
}否则{
personThumb.setImageResource(mThumbs);
}
*/
personThumb.setImageResource(mThumbs);
personName.setText(mList.get(position.fullName.toString());
}否则{
personThumb.setImageResource(mThumbs);
setText(“添加朋友”);
}
}否则{
视图=(视图)转换视图;
}
返回视图;
}
摘自我的主要活动
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));
}
}
}
创建时受保护的void(Bundle savedInstanceState){
私有GridView GridView;
gridView=(gridView)findViewById(R.id.thumb\u grid\u view);
交朋友();
}
私密的void getFriends(){
RetrieveFriendList任务=新建RetrieveFriendList();
task.execute();
}
私有类RetrieveFriendList扩展异步任务{
@凌驾
受保护的ArrayList doInBackground(字符串…参数){
废话。。。
返回好友列表;
}
@凌驾
受保护的void onPostExecute(最终ArrayList结果){
如果(结果!=null){
setAdapter(新的ContactGridAdapter(getApplicationContext(),result));
}
}
}
但是,这不符合我的预期。我应该从MainActivity还是从适配器内部填充默认值?尝试执行以下操作:
@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;
}如果您使用数组或arraylist在gridview中绑定数据,则在第一个位置添加数据,而不是在添加JSON结果的数据之后添加数据。所以您可以将数据放在数组或arraylist的第一个位置。然后将其绑定到gridview。您好,谢谢您的建议。虽然你的解决方案也是可能的,但我必须使用@Abhishek的答案。不过,我也赞成你的答案。