实例代码:

package com.hsj.example.gridviewdemo01;import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AbsListView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;import com.hsj.example.gridviewdemo01.com.hsj.utils.NetUtils;import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;public class MainActivity extends AppCompatActivity {private ListView listView_movies;private String path;private ProgressDialog progressDialog;private List<Map<String,Object>> data=new ArrayList<>();private SimpleAdapter adapter;private int pageNo=1;private int pageSize=20;/*** 是否滚到页面底部*/private boolean isBottom;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);this.listView_movies= (ListView) this.findViewById(R.id.listView_movies);this.progressDialog=new ProgressDialog(this);this.progressDialog.setMessage("正在加载数据,请稍等.....");this.progressDialog.setCancelable(false);this.listView_movies.setOnScrollListener(new AbsListView.OnScrollListener() {@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {if(isBottom && scrollState== AbsListView.OnScrollListener.SCROLL_STATE_IDLE){pageNo++;try {path = "https://movie.douban.com/j/search_subjects?type=movie&tag="+ URLEncoder.encode("热门","utf-8")+"&sort=recommend&page_limit="+pageSize+"&page_start="+(pageNo-1)*pageSize;new LoadNetDataAsyncTask().execute(path);} catch (UnsupportedEncodingException e) {e.printStackTrace();}}}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {isBottom=firstVisibleItem+visibleItemCount==totalItemCount;}});try {path = "https://movie.douban.com/j/search_subjects?type=movie&tag="+ URLEncoder.encode("热门","utf-8")+"&sort=recommend&page_limit=20&page_start=0";new LoadNetDataAsyncTask().execute(path);} catch (UnsupportedEncodingException e) {e.printStackTrace();}}/*** 加载网络数据的*/private final class LoadNetDataAsyncTask extends AsyncTask<String,Void,List<Map<String,Object>>>{@Overrideprotected void onPreExecute() {progressDialog.show();}@Overrideprotected List<Map<String, Object>> doInBackground(String... params) {try {InputStream inputStream= NetUtils.getInputStreamByPath(params[0]);if(inputStream!=null){String json=NetUtils.getJsonByInputStream(inputStream);if(json!=null){return NetUtils.getListMaps(json);}}} catch (Exception e) {e.printStackTrace();}return null;}@Overrideprotected void onPostExecute(List<Map<String, Object>> maps) {if(maps.size()>0){data.addAll(maps);if(adapter==null){adapter=new SimpleAdapter(MainActivity.this,data,R.layout.movie_item,new String[]{"title","cover"},new int[]{R.id.textView_title,R.id.imageView_cover});/*给用户一次机会:手工将指定数据绑定到指定控件上的机会*/adapter.setViewBinder(new SimpleAdapter.ViewBinder() {/*** 当给控件赋值时自动调用的方法* @param view 需要绑定数据的视图对象* @param data  需要给视图设置的数据* @param textRepresentation 需要给视图设置的数据* @return 如果使用setViewValue()方法完成数据绑定则返回true,否则使用默认的数据绑定则返回false*/@Overridepublic boolean setViewValue(View view, Object data, final String textRepresentation) {if(view instanceof ImageView){final ImageView imageView_cover= (ImageView) view;class LoadImageSyncTask extends AsyncTask<String,Void,Bitmap>{@Overrideprotected Bitmap doInBackground(String... params) {try {InputStream inputStream=NetUtils.getInputStreamByPath(textRepresentation);if(inputStream!=null){return  BitmapFactory.decodeStream(inputStream);}} catch (Exception e) {e.printStackTrace();}return null;}@Overrideprotected void onPostExecute(Bitmap bitmap) {if(bitmap!=null){imageView_cover.setImageBitmap(bitmap);}}}new LoadImageSyncTask().execute(textRepresentation);return true;}System.out.println("====setViewValue(View view="+view+", Object data="+data+", String textRepresentation="+textRepresentation+")====");return false;}});listView_movies.setAdapter(adapter);}else{adapter.notifyDataSetChanged();}}progressDialog.dismiss();}}
}

android 之图文混排+GridView相关推荐

  1. android多媒体图文混排,干货!!!Android富文本实现图文混排

    效果图 rich.jpg 像图中的效果,大家在开发并不少见,大家可能不知道android提供了实现图文混排的类.大家或许会写一个布局或者使用drawableLeft这个属性实现文本的左侧图标. and ...

  2. android多媒体图文混排,android图文混排

    背景 最近我们的产品来了个新的模块,给学生做题提高成绩的.需求如下: 支持单选.多选.填空题 支持图片文字混排 输入框有交互,排版精致美观 为了体验优化,不能使用网页实现效果 思路分析 我们的图文混排 ...

  3. Android 动态图文混排的常用方法

    2019独角兽企业重金招聘Python工程师标准>>> DrawableIcon的设置 对于TextView或者EditText动态设置drawableLeft,drawableRi ...

  4. Android动态图文混排,Android控件TextView实现静态图与动态GIF图文混排

    最近做项目功能时,需要在TextView中展示图文,刚开始做的时候以为很简单,只需要用个ImageView跟TextView来展示就行了,可是发现这样做,不能实现我们需要的效果,这就需要涉及到富文本T ...

  5. [Android]listview图文混排

    一.效果图: 二.代码实现 2.1ListViewActivity package cn.ac.ucas.yp.uiwidgettest;import android.support.v7.app.A ...

  6. Android TextView中图文混排设置行间距导致高度不一致问题解决

    Android TextView中图文混排设置行间距导致高度不一致问题解决 参考文章: (1)Android TextView中图文混排设置行间距导致高度不一致问题解决 (2)https://www. ...

  7. android 点击图片事件,android图文混排点击事件

    图文混排顾名思义就是把文字和图片混合排列在一起,比较简单的需求我们也可以通过TextView和ImageView配合使用来达到目的,但是遇到稍微复杂一些的情况这种方法就不适用了. 做这样一个按钮: 对 ...

  8. Android中实现不同文字颜色和图文混排的Span总结

    一.怎么在TextView中设置首行缩进两个字符 在string资源文件中,在文字的前面加入"\u3000\u3000"即可实现首行缩进 在Java代码中,使用setText(&q ...

  9. Android 图文混排 通过webview实现并实现点击图片

    在一个开源项目看到是用的webview 实现的 1. 这是在asset中的一个模板html <html> <head> <title>News Detail< ...

最新文章

  1. Flask 报错 RuntimeError: No application found. Either work inside a view function or push an applicati
  2. Longest k-Good Segment CodeForces - 616D(尺取法)
  3. git 撤销挂起的更改_Timer计时任务因系统时间的修改导致挂起解决方案
  4. python CS游戏1--角色创建,武器购买
  5. Copy++ 复制 PDF、CAJ 内容时,自动删除空格、空行,以及自动翻译[Win]
  6. HTML页面加载完毕后,再运行JS业务
  7. 模块化(AMD、CMD、CommonJS、ES6)
  8. swagger里面显示的示例参数格式错误
  9. php 代码的分离和调用及注意事项(版本、变量及cookie与session的区别,PHP包含文件函数include、include_once、require、require_once区别和总结)
  10. win10虚拟显示器开发
  11. C专家编程电子书pdf下载
  12. python对比多个excel数据_python-pandas两个相同格式的excel对比输出不同内容
  13. 学习英文-学以致用【场景:程序员英文-开发环境】
  14. 【转载】一些软件设计原则
  15. 日常生活中常用的五星级句子
  16. 高通平台开发系列讲解(AI篇)SNPE工作流程介绍
  17. 深入理解同步工具类,看这篇就够了
  18. JavaScript工作面试常用知识点总结大全
  19. 分享一个快速的Json(反)序列化开源项目 Jil
  20. 《和声学教程》学习笔记(五):II级和弦和VI级和弦

热门文章

  1. Python 学习笔记(2)创建文件夹
  2. 怎么给工作中重要的pdf文件加密
  3. vs显式导入(代码注入)依赖库
  4. 云存储基础设施的决定:公共云与私有云
  5. R语言扩展包dplyr——数据清洗和整理
  6. 导出excel——入门
  7. 实现线程栈初始化(RTT)
  8. 2019年上海市数学建模讲座笔记(2)概率统计模型
  9. 计算机硬盘清理,电脑磁盘清理,详细教您电脑磁盘怎么清理
  10. 超级计算机的缺点,超级计算机也无法算完圆周率,反而会死机?说出来你一定不会相信...