关于分页的问题,在线急等

============问题描述============

运行程序,没有显示出数据,而是弹出Toast"没有更多数据了...."求解

public class MainActivity extends Activity {

private ListView listView ;

private ListAdapter adapter ;

static int pageNo =1 ;

String url = "http://dingtao2.gotoip2.com/publish-info.html?type=1&pageLines=10&pageNo=" ;

boolean isScroll = false ;

List<Map<String, Object>> lists = new ArrayList<Map<String,Object>>() ;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

super.setContentView(R.layout.activity_main);

adapter = new ListAdapter(this) ;

listView = (ListView) findViewById(R.id.listView1) ;

new DownloadTask().execute(url,Integer.toString(pageNo) ) ;

//listView.setAdapter(adapter) ;

listView.setOnScrollListener(new OnScrollListener() {

@Override

public void onScrollStateChanged(AbsListView view, int scrollState) {

// TODO Auto-generated method stub

if(isScroll && (scrollState == SCROLL_STATE_IDLE)){     // 状态:0    滑动到底部

new DownloadTask().execute(url,Integer.toString(pageNo) ) ;

}

}

@Override

public void onScroll(AbsListView view, int firstVisibleItem,

int visibleItemCount, int totalItemCount) {

// TODO Auto-generated method stub

isScroll = ((firstVisibleItem + visibleItemCount) == totalItemCount) ;

System.out.println("------->"+totalItemCount) ;

}

}) ;

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

class DownloadTask extends AsyncTask<String, Void, List<Map<String, Object>>>{

@Override

protected List<Map<String, Object>> doInBackground(String... params) {

// TODO Auto-generated method stub

List<Map<String, Object>> list = new ArrayList<Map<String,Object>>() ;

HashMap<String, Object> map ;

HttpClient client = new DefaultHttpClient() ;

HttpGet get = new HttpGet(params[0]+params[1]) ;

try {

HttpResponse response = client.execute(get) ;

if(response.getStatusLine().getStatusCode() == 200){

String jsonData = EntityUtils.toString(response.getEntity(), "UTF-8") ;

try {

JSONObject jsonObject = new JSONObject(jsonData) ;

JSONArray jsonArray = jsonObject.getJSONArray("list") ;

if(!jsonArray.isNull(0)){

for(int i = 0 ;i<jsonArray.length() ;i++){

JSONObject jsonObject2 = jsonArray.getJSONObject(i) ;

map = new HashMap<String, Object>() ;

Iterator iterator = jsonObject2.keys() ;

while(iterator.hasNext()){

String key =  (String) iterator.next() ;

Object value = jsonObject2.get(key) ;

map.put(key, value) ;

}

list.add(map) ;

}

return list ;

}

} catch (JSONException e) {

// TODO Auto-generated catch block

}

}

} catch (ClientProtocolException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// System.out.println("---1--->"+list.size());

return list ;

}

@Override

protected void onPostExecute(List<Map<String, Object>> result) {

// TODO Auto-generated method stub

super.onPostExecute(result);

if(result.size()>0){

lists.addAll(result) ;

adapter.setData(lists) ;

if(pageNo == 1){

listView.setAdapter(adapter) ;

}

adapter.notifyDataSetChanged() ;

pageNo ++ ;

}else{

Toast.makeText(getApplicationContext(), "没有更多数据了....", 0).show() ;

}

}

@Override

protected void onPreExecute() {

// TODO Auto-generated method stub

// System.out.println("--pageNo---"+pageNo);

super.onPreExecute();

}

}

}

=======================================================================================

public class ListAdapter extends BaseAdapter {

List<Map<String,Object>> list ;

LayoutInflater inflater ;

public void setData(List<Map<String,Object>> data){

this.list = data ;

}

public ListAdapter(Context context) {

List<Map<String,Object>> list  = new ArrayList<Map<String,Object>>() ;

inflater = LayoutInflater.from(context) ;

}

@Override

public int getCount() {

// TODO Auto-generated method stub

return list.size() ;

}

@Override

public Object getItem(int position) {

// TODO Auto-generated method stub

return list.get(position) ;

}

@Override

public long getItemId(int position) {

// TODO Auto-generated method stub

return position ;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

// TODO Auto-generated method stub

ViewHolder vhHolder ;

if(convertView == null){

vhHolder = new ViewHolder() ;

convertView = inflater.inflate(R.layout.list_item, null) ;

vhHolder.tv1 = (TextView) convertView.findViewById(R.id.textView1) ;

vhHolder.tv2 = (TextView) convertView.findViewById(R.id.textView2) ;

convertView.setTag(vhHolder) ;

}else{

vhHolder = (ViewHolder) convertView.getTag() ;

}

vhHolder.tv1.setText(list.get(position).get("id")+"、") ;

vhHolder.tv2.setText(list.get(position).get("title").toString()) ;

return convertView ;

}

static class ViewHolder{

TextView tv1 ;

TextView tv2 ;

}

}

============解决方案1============

引用 2 楼 NASA_001 的回复:

Quote: 引用 1 楼 sagittarius1988 的回复:

说明你doInBackground里获取到的List数据就是空的啊

前辈能帮我修改修改吗?

这个还真不好改,你要看你String jsonData = EntityUtils.toString(response.getEntity(), "UTF-8") ;这里得到的是什么

============解决方案2============

检查下网络请求是否成功,成功后数据返回是否正确,数据返回正确后检查json转化成list是否出错

时间: 2024-10-11 18:24:07

关于分页的问题,在线急等的相关文章

求助大牛 帮忙看 看 在线急等

Error:Cannot run program "E:\Program Files\Java\jdk1.8.0_121\bin\java" (in directory "C:\Users\Administrator\.IntelliJIdea2017.2\system\compile-server"): CreateProcess error=193, %1 不是有效的 Win32 应用程序.

大佬们救命啊 在线急等

原文地址:http://blog.51cto.com/13788249/2124411

webmagic采集CSDN的Java_WebDevelop页面

项目中使用到了webmagic,采集论坛一类的页面时需要一些特殊的配置.在此记录一下 先来看看我要采集的页面 点击第2页可以看到它的url是http://bbs.csdn.net/forums/Java_WebDevelop?page=2 点击尾页可以看到它的url是http://bbs.csdn.net/forums/Java_WebDevelop?page=758 也就是说我们需要采集的范围是从2到758页 这样我们就可以通过自己拼接一个url来模拟所有 的连接了代码如下: <span st

写出你现在所在城市,年级,老家在哪

身高.然后正在干嘛.首先我是一个仙女 一个做to(四声)现 di(四声)款 ti(二声)额的仙女 开通十三星 京东白条 fenqi付款等等等我一直就是个数学**,居然大学被数学录取了看来命运很想让我学数学嘛!真的很无语?啊! 浙江考生分 次序 ?_?还有什么专科大学读吗,心塞 请问大学考公的人多吗 大概多少人能考上呢????????????湖北第二师范学院,国家公办老牌二本院校,全日制本科就业班招生工作已经正式启动,凡是志河北考生,二本没走了,只能报专科了,专科和二本真的差的很大吗想问一下,西安

被一个大学录了,能申请退档参加征集志愿吗

急求解大学生活马上到了 我该在大学里怎么生活呢 求过来人的帮助 新生提前一天报道,和正常报道有区别吗?提前一天,是不是也能把该领的东西都能领,然后该办的手续都能办了?关键问题是能见到导员么?还是只是让你先想请教下吧友们,LZ开学大三,爸妈一心想让我以后读研,说是本科生满大街都是,读研出来才能找到好工请问大学开学一定要带团员证吗,我团员证和入团申请都没了,不想去补办 能不拿吗,有什么影响吗,我前辈们,你们在大学一般一个月生活费都带多少? 江西文科,专科分,能上哪里大学的专科呢,想去沿海城市.之前到

程矢Axure夜话:中继器系列视频教程之中继器原型设计二十一条军规

程矢Axure夜话:中继器系列视频教程之中继器原型设计二十一条军规 案例描述:中继器实现原型设计二十一条军规 知识点: 中继器分页 效果图: 在线效果预览: AxShare在线效果预览: 原型下载地址:中继器原型设计二十一条军规 .rp 在线视频: 实现步骤: 更新中-..

分享10款非常有用的 Ajax 插件

这篇文章与大家分享的是10款非常有用的 Ajax 插件,有用于图片的,用于分页的,还有用于导航的.这些作者的想法特别新颖,希望你能从中找到自己需要的插件. 1. AJAX-ZOOM 非常强大的一款插件,可用鼠标滚轮进行缩放,360° 旋转,全屏浏览等很多功能,在线演示 2. VerticalSlider 用于显示长列表的很好的方式,以Ajax方式加载,在线演示 3. More plugin 一款实现更多功能的插件,可用于显示更多评论,也可用于显示后面多少篇博文等,在线演示 4. HTML5 dr

web前端的十种jquery特效及源码下载

1.纯CSS3实现自定义Tooltip边框 涂鸦风格 这是一款用纯CSS3打造的自定义Tooltip边框的应用,之前我们讨论过如何用CSS3来实现不同样式的Tooltip,今天的这款Tooltip却可以用CSS3来自定义边框,边框呈涂鸦风格.用CSS3实现自定义边框的好处是可以自适应边框内部的文字数量大小. 在线演示 源码下载 2.jQuery矢量SVG地图插件JVectorMap JVectorMap是一款基于jQuery的矢量地图插件,它是基于SVG结构的,和其他jQuery地图插件不同的是

word 文档导出 (freemaker+jacob)--java开发

工作中终于遇到了 需要导出word文旦的需求了.由于以前没有操作过,所以就先百度下了,基本上是:博客园,简书,CDSN,这几大机构的相关帖子比较多,然后花了2周时间 才初步弄懂.  学习顺序: 第一阶段 1,.首先 是 先了解 java 通过什么方式 来操作word的导出工作.就有了下面这个帖子了: java 操作 word 的方法 :https://www.cnblogs.com/lcngu/p/5247179.html .新手可以先看看了解下. 2. 根据需求:操作word很复杂: 1.有图