android 之图文混排+GridView
生活随笔
收集整理的這篇文章主要介紹了
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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pta和pp什么关系
- 下一篇: android 之Expandable