
@OverrIDe protected VoID doInBackground(VoID... params) { getData();// get data first time. 8 data items. return null; } @OverrIDe protected voID onPostExecute(VoID result) { super.onPostExecute(result); pd.dismiss(); lv= (ListVIEw) findVIEwByID(R.ID.lvn); yt = new YouTubeAdapter(Youtube.this,msg,Title,thumb); lv.setAdapter(yt); lv.setonScrollListener(new endlessscroll()); } 获取数据代码
public voID getData(){ httpClIEnt httpclIEnt = new DefaulthttpClIEnt(); httpclIEnt.getParams().setParameter(CoreProtocolPnames.PROTOCol_VERSION,httpVersion.http_1_1); httpGet request = new httpGet("http://gdata.youtube.com/Feeds/API/users/mbbangalore/uploads?v=2&alt=Jsonc"); try { httpResponse response = httpclIEnt.execute(request); httpentity resEntity = response.getEntity(); String _response=EntityUtils.toString(resEntity); // content will be consume only once JsONObject Json = new JsONObject(_response); JsonArray = Json.getJsONObject("data").getJsONArray("items"); for (int i = 0; i < 8; i++) { JsONObject JsonObject = JsonArray.getJsONObject(i); String Title1 = JsonObject.getString("Title"); Title.add(Title1); String thumbUrl = JsonObject.getJsONObject("thumbnail").getString("sqDefault"); URL url1 = new URL(thumbUrl); Bitmap bmp = BitmapFactory.decodeStream(url1.openConnection().get@R_403_5983@Stream()); thumb.add(bmp); String url; try { url = JsonObject.getJsONObject("player").getString("default"); msg.add(url); } catch (JsONException ignore) { } } } catch(Exception e1) { e1.printstacktrace(); } httpclIEnt.getConnectionManager().shutdown();} 滚动时加载数据
class endlessscroll implements OnScrollListener { private int visibleThreshold = 5; private int currentPage = 0; private int prevIoUsTotal = 0; private boolean loading = true; public endlessscroll() { } public endlessscroll(int visibleThreshold) { this.visibleThreshold = visibleThreshold; } @OverrIDe public voID onScroll(AbsListVIEw vIEw,int firstVisibleItem,int visibleItemCount,int totalitemCount) if (lv.getLastVisibleposition() >= lv.getCount()); {System.out.println("............................"+"first"+ firstVisibleItem+"visible"+visibleItemCount+"total"+ totalitemCount); for (int i= totalitemCount; i < JsonArray.length(); i++) { try { JsONObject JsonObject = JsonArray.getJsONObject(i); // The Title of the vIDeo String Title1 = JsonObject.getString("Title"); Title.add(Title1); System.out.println("Title"+Title); String thumbUrl = JsonObject.getJsONObject("thumbnail").getString("sqDefault"); URL url1 = new URL(thumbUrl); Bitmap bmp = BitmapFactory.decodeStream(url1.openConnection().get@R_403_5983@Stream()); thumb.add(bmp); String url; url = JsonObject.getJsONObject("player").getString("default"); msg.add(url); } catch (JsONException ignore) { // url = JsonObject.getJsONObject("player").getString("default"); } catch(Exception e) { } yt.notifyDataSetChanged(); } } } @OverrIDe public voID onScrollStateChanged(AbsListVIEw vIEw,int scrollState) { }} 现在的问题.我可以用滚动显示8个ListvIEw行.想象一下,服务器有10000个数据项.当用户向下滚动时,我需要在列表视图中显示8项.当用户滚动下来时,应该下载和显示新数据,直到用户能够看到第10000个数据.这段代码怎么了?
解决方法 如果您不想使用滚动检测器,另一种方法是从适配器触发下载,当从getVIEw()请求最后一个项目时,运行任务并将更多项目附加到适配器的集合.然后调用notifyDataSetChanged().更新:
参见演示要点here.
总结以上是内存溢出为你收集整理的android – 如何在滚动时将数据从服务器加载到listview?全部内容,希望文章能够帮你解决android – 如何在滚动时将数据从服务器加载到listview?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)