android 之图文混排+GridView
实例代码:
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相关推荐
- android多媒体图文混排,干货!!!Android富文本实现图文混排
效果图 rich.jpg 像图中的效果,大家在开发并不少见,大家可能不知道android提供了实现图文混排的类.大家或许会写一个布局或者使用drawableLeft这个属性实现文本的左侧图标. and ...
- android多媒体图文混排,android图文混排
背景 最近我们的产品来了个新的模块,给学生做题提高成绩的.需求如下: 支持单选.多选.填空题 支持图片文字混排 输入框有交互,排版精致美观 为了体验优化,不能使用网页实现效果 思路分析 我们的图文混排 ...
- Android 动态图文混排的常用方法
2019独角兽企业重金招聘Python工程师标准>>> DrawableIcon的设置 对于TextView或者EditText动态设置drawableLeft,drawableRi ...
- Android动态图文混排,Android控件TextView实现静态图与动态GIF图文混排
最近做项目功能时,需要在TextView中展示图文,刚开始做的时候以为很简单,只需要用个ImageView跟TextView来展示就行了,可是发现这样做,不能实现我们需要的效果,这就需要涉及到富文本T ...
- [Android]listview图文混排
一.效果图: 二.代码实现 2.1ListViewActivity package cn.ac.ucas.yp.uiwidgettest;import android.support.v7.app.A ...
- Android TextView中图文混排设置行间距导致高度不一致问题解决
Android TextView中图文混排设置行间距导致高度不一致问题解决 参考文章: (1)Android TextView中图文混排设置行间距导致高度不一致问题解决 (2)https://www. ...
- android 点击图片事件,android图文混排点击事件
图文混排顾名思义就是把文字和图片混合排列在一起,比较简单的需求我们也可以通过TextView和ImageView配合使用来达到目的,但是遇到稍微复杂一些的情况这种方法就不适用了. 做这样一个按钮: 对 ...
- Android中实现不同文字颜色和图文混排的Span总结
一.怎么在TextView中设置首行缩进两个字符 在string资源文件中,在文字的前面加入"\u3000\u3000"即可实现首行缩进 在Java代码中,使用setText(&q ...
- Android 图文混排 通过webview实现并实现点击图片
在一个开源项目看到是用的webview 实现的 1. 这是在asset中的一个模板html <html> <head> <title>News Detail< ...
最新文章
- Flask 报错 RuntimeError: No application found. Either work inside a view function or push an applicati
- Longest k-Good Segment CodeForces - 616D(尺取法)
- git 撤销挂起的更改_Timer计时任务因系统时间的修改导致挂起解决方案
- python CS游戏1--角色创建,武器购买
- Copy++ 复制 PDF、CAJ 内容时,自动删除空格、空行,以及自动翻译[Win]
- HTML页面加载完毕后,再运行JS业务
- 模块化(AMD、CMD、CommonJS、ES6)
- swagger里面显示的示例参数格式错误
- php 代码的分离和调用及注意事项(版本、变量及cookie与session的区别,PHP包含文件函数include、include_once、require、require_once区别和总结)
- win10虚拟显示器开发
- C专家编程电子书pdf下载
- python对比多个excel数据_python-pandas两个相同格式的excel对比输出不同内容
- 学习英文-学以致用【场景:程序员英文-开发环境】
- 【转载】一些软件设计原则
- 日常生活中常用的五星级句子
- 高通平台开发系列讲解(AI篇)SNPE工作流程介绍
- 深入理解同步工具类,看这篇就够了
- JavaScript工作面试常用知识点总结大全
- 分享一个快速的Json(反)序列化开源项目 Jil
- 《和声学教程》学习笔记(五):II级和弦和VI级和弦