刚学Android求大神解答下 ListView分页加载的问题

来源:互联网 发布:淘宝商家佣金怎么算 编辑:程序博客网 时间:2024/05/16 18:23
最近去读取新浪的公共接口想用到上拉加载更多
String url = "https://api.weibo.com/2/statuses/public_timeline.json?access_token=key&count=";就这个url测试,后面的count是传的显示条数。
我现在写法是加载更多功能可以实现,但是这样是重新加载了,条数是增加了,不过界面会跳到listView的顶部上去,而不是接着在底部显示加载更多后的。
activity里面代码是这样
Handler handler = new Handler() {
public void handleMessage(Message msg) {
data = (String) msg.obj;
adapter = new WeiBoAdapter(WeiBoActivity.this, list);
mListView.setAdapter(adapter);
Read.listview(data, list);
}
};

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.list_activity);
list = new ArrayList<WeiBoInfo>();
mListView = (XListView) findViewById(R.id.list);
mListView.setPullLoadEnable(true);
mListView.setXListViewListener(this);
mHandler = new Handler();
Get.doGet(url + count, handler);// xUtils

}

@Override
public void onLoadMore() {
// TODO Auto-generated method stub
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
count += 3;
Get.doGet(url + count, handler);
adapter.notifyDataSetChanged();
onLoad();
}
}, 2000);

}


adapter的代码
public class WeiBoAdapter extends BaseAdapter {
List<WeiBoInfo> list;
Context context;
LayoutInflater inflater;

WeiBoInfo info = new WeiBoInfo();

public WeiBoAdapter(Context context, List<WeiBoInfo> list) {
this.context = context;
this.list = list;
inflater = LayoutInflater.from(context);

}

@Override
public int getCount() {
return list == null ? 0 : list.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}

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

@Override
public View getView(int position, View view, ViewGroup arg2) {
// TODO Auto-generated method stub
if (view == null) {
WeiBoHolder holder = new WeiBoHolder();
view = inflater.inflate(R.layout.item_layout, null);
holder.wbicon = (ImageView) view.findViewById(R.id.wbicon);
holder.wbuser = (TextView) view.findViewById(R.id.wbuser);
holder.wbtext = (TextView) view.findViewById(R.id.wbtext);
holder.time = (TextView) view.findViewById(R.id.time);
view.setTag(holder);
}


WeiBoHolder holder = (WeiBoHolder) view.getTag();
info = list.get(position);

BitmapUtils bitmapUtils = new BitmapUtils(context);
bitmapUtils.display(holder.wbicon, info.getImgUrl());
holder.wbuser.setText(info.getUserName());
holder.wbtext.setText(info.getText());
holder.time.setText(info.getTime());
return view;
}


class WeiBoHolder {
ImageView wbicon = null;
TextView wbtext = null;
TextView wbuser = null;
TextView time = null;
}

json解析的代码
public class Read {
public static void listview(String data, List<WeiBoInfo> list) {
String icon = null;
WeiBoInfo info = new WeiBoInfo();
try {
JSONObject josnobject = new JSONObject(data);
JSONArray jsonArrays = josnobject.getJSONArray("statuses");
for (int i = 0; i < jsonArrays.length(); i++) {
info = new WeiBoInfo();
JSONObject object = jsonArrays.getJSONObject(i);
JSONObject user = object.getJSONObject("user");
icon = user.optString("profile_image_url");
info.setImgUrl(icon);
info.setTime(object.optString("created_at"));
info.setUserName(user.optString("name"));
info.setText(object.optString("text"));
list.add(info);
}
} catch (Exception e) {
e.printStackTrace();
}

}

0 0