求助一个比较难的问题

cnaaa8 2014-09-24 10:30:26
adapter调用 notifyDataSetChanged 不会更新


package com.gift.android.travel.fragment;

import java.util.ArrayList;

import java.util.List;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import com.gift.android.R;
import com.gift.android.Utils.HttpUtils;
import com.gift.android.Utils.ImageCache;
import com.gift.android.Utils.Utils;
import com.gift.android.travel.fragment.base.BaseTravelFragment;
import com.gift.android.travel.model.PhotoWallJson;
import com.gift.android.travel.model.PhotoWallList;

import com.gift.android.widget.pulltorefreshlistview.PullToRefreshBase;
import com.gift.android.widget.pulltorefreshlistview.PullToRefreshBase.OnRefreshListener2;
import com.gift.android.widget.pulltorefreshlistview.PullToRefreshGridView;
import com.google.gson.Gson;

/**
* 目的地 -照片墙
*
* @author duanzheng
*
*/

public class microtravelDetailiInfoPhotoWallFragment extends BaseTravelFragment
implements OnRefreshListener2<GridView> {
private LayoutInflater inflater;
private View mtdipw;
private PullToRefreshGridView gv;

private int pageIndex = 1;
private int pageSize = 15;

private gvadapter adapter;
private PhotoWallJson photoWallJson;
private List<PhotoWallList> list;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
this.inflater = inflater;
mtdipw = inflater.inflate(
R.layout.microtravel_detaili_info_photowall_fragment, null);
return super.onCreateView(inflater, container, savedInstanceState);
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
// TODO Auto-generated method stub
setContentView(mtdipw);
findbyid();
initView();
getDate(true);
super.onViewCreated(view, savedInstanceState);
}

private void getDate(boolean isStartAnimator) {
String args = String.format("&destId=%s&version=%s", "3559", "1.0.0");
if (isStartAnimator) {
loading.doGet(
"http://192.168.0.64/api/router/rest.do?method=api.com.trip.dest.pic"
+ args, "api.com.trip.dest.pic", 0, "", this);
} else {
HttpUtils.getInstance().doGet(
"http://192.168.0.64/api/router/rest.do?method=api.com.trip.dest.pic"
+ args, "api.com.trip.dest.pic", 0, "", this);
}

}

public void requestFinished(String response, String method) {
Log.i("test", "response:" + response);

Gson gson = new Gson();
photoWallJson = gson.fromJson(response, PhotoWallJson.class);

if (photoWallJson.code == 1) {
if (photoWallJson.data != null && photoWallJson.data.list != null
&& photoWallJson.data.list.size() > 0) {

Log.i("test", "更新前list:" + list.size());
//for(int i=0;i<30;i++){
list.addAll(photoWallJson.data.list);
//}
Log.i("test", "更新后list:--->" + list.size());
gv.setLastPage(photoWallJson.data.hasNext);
if (!photoWallJson.data.hasNext) {
pageIndex++;
}
Log.i("test", "开始更新数据");
adapter.notifyDataSetChanged();//这一行执行后不会更新,list已经改变
}
}

gv.onRefreshComplete();
}

public void requestFailure(Throwable t, String method) {
if (gv != null) {
gv.onRefreshComplete();
}
Utils.showToast(getActivity(), R.drawable.face_fail,
"哎呀,网络不给力\n请稍后再试试吧", 0);
}

private void initView() {
list = new ArrayList<PhotoWallList>();

adapter = new gvadapter(getActivity(), list);
gv.setAdapter(adapter);

gv.setOnRefreshListener(this);

}

private void findbyid() {
gv = (PullToRefreshGridView) mtdipw.findViewById(R.id.gv);
}

class gvadapter extends BaseAdapter {
private Context mContext;
// private List<PhotoWallList> list = new ArrayList<PhotoWallList>();

/*
* public List<PhotoWallList> getList() { return list; }
*/
private List<PhotoWallList> mList;

public gvadapter(Context context, List<PhotoWallList> list) {
super();
Log.i("test", "进来:" + list.size());
this.mContext = context;
this.mList = list;
// TODO Auto-generated constructor stub
}

@Override
public int getCount() {
// TODO Auto-generated method stub
//return (mList != null ? mList.size() : 0);
return (mList != null && mList.size()>0 ? 20 : 0);
}

@Override
public Object 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) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = View.inflate(mContext,
R.layout.microtravel_detaili_info_photowall_item, null);
holder.iv = (ImageView) convertView.findViewById(R.id.iv);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}

/*ImageCache
.display(
"http://s0.hao123img.com/res/r/image/2014-09-23/0e348339febbb4eb0c3ceeba26067a1b.jpg",
holder.iv, R.drawable.coverdefault);*/

holder.iv.setBackgroundResource(R.drawable.coverdefault_170);


return convertView;
}

}

class ViewHolder {
ImageView iv;
}

@Override
public void onPullDownToRefresh(PullToRefreshBase<GridView> refreshView) {
// TODO Auto-generated method stub
getDate(false);
pageIndex = 1;
}

@Override
public void onPullUpToRefresh(PullToRefreshBase<GridView> refreshView) {
// TODO Auto-generated method stub
if (gv.isLastPage()) {
gv.onRefreshComplete();
} else {
getDate(false);
}
}

}








<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="#F1F1F1" />

<com.gift.android.widget.pulltorefreshlistview.PullToRefreshGridView xmlns:ptr="http://schemas.android.com/apk/res/com.gift.android"
android:id="@+id/gv"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:horizontalSpacing="5dp"
android:listSelector="@null"
android:numColumns="3"
android:scrollbars="none"
android:verticalSpacing="5dp"
ptr:ptrMode="both" >
</com.gift.android.widget.pulltorefreshlistview.PullToRefreshGridView>

</LinearLayout>
...全文
167 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dz215136304 2016-03-23
  • 打赏
  • 举报
回复
代码好像没有什么问题
红袖满楼招 2014-09-24
  • 打赏
  • 举报
回复
list.addAll(photoWallJson.data.list);这句代码之前加上一句 list.clear();
skgary 2014-09-24
  • 打赏
  • 举报
回复
你执行完之后,有没有试着滚动过? 有没有可能是实际已经更新了,但是新的数据在最下面? 代码好像没有什么问题

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧