日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android 之ListView总结(一个综合实例)

發布時間:2025/4/5 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 之ListView总结(一个综合实例) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實例效果:



后臺邏輯:

package com.hsj.example.paginationloadnetdatademo02;import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; import android.os.Bundle; import android.os.SystemClock; import android.support.v7.app.AppCompatActivity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView;import com.hsj.example.paginationloadnetdatademo02.com.hsj.domain.Movie; import com.hsj.example.paginationloadnetdatademo02.com.hsj.utils.Utils;import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List;public class MainActivity extends AppCompatActivity {private ListView listView_movies;private MyAdapter adapter;private String path;private int pageNo=1;private int pageSize=20;//總數據源private List<Movie> data=new ArrayList<>();// 存放最后一個可見條目的索引值private int lastVisibleItem;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);this.listView_movies= (ListView) this.findViewById(R.id.listView_movies);View footerView=View.inflate(this,R.layout.footer_view,null);this.listView_movies.addFooterView(footerView);this.listView_movies.setOnScrollListener(new AbsListView.OnScrollListener() {@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {if(lastVisibleItem==adapter.getCount() && 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;} catch (UnsupportedEncodingException e) {e.printStackTrace();}new LoadNetDataAsyncTask().execute(path);}}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {lastVisibleItem=firstVisibleItem+visibleItemCount-1;}});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();}}private final class LoadNetDataAsyncTask extends AsyncTask<String,Void,List<Movie>>{@Overrideprotected List<Movie> doInBackground(String... params) {try {InputStream inputStream=Utils.getInputStreamByPath(params[0]);if(inputStream!=null){String json=Utils.getStringByInputStream(inputStream);SystemClock.sleep(3000);return Utils.getListMovies(json);}} catch (Exception e) {e.printStackTrace();}return null;}@Overrideprotected void onPostExecute(List<Movie> movies) {if(movies!=null){//將當前頁的數據添加到大集合中data.addAll(movies);if(adapter==null){adapter=new MyAdapter(data);listView_movies.setAdapter(adapter);}else{//更新界面adapter.notifyDataSetChanged();}}}}private final class MyAdapter extends BaseAdapter{private List<Movie> movies;private LayoutInflater layoutInflater;private ViewHolder viewHolder=null;public MyAdapter(List<Movie> movies) {this.movies=movies;layoutInflater=LayoutInflater.from(MainActivity.this);}@Overridepublic int getCount() {return movies.size();}@Overridepublic Object getItem(int position) {return movies.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {Movie movie= movies.get(position);final String cover=movie.getCover();if(convertView==null){viewHolder=new ViewHolder();//將布局文件轉換成View 對象convertView=layoutInflater.inflate(R.layout.movie_item,null);viewHolder.imageView_cover= (ImageView) convertView.findViewById(R.id.imageView_cover);viewHolder.textView_title= (TextView) convertView.findViewById(R.id.textView_title);convertView.setTag(viewHolder);}else{viewHolder= (ViewHolder) convertView.getTag();}viewHolder.imageView_cover.setTag(cover);class LoadImageAsyncTask extends AsyncTask<String,Void,Bitmap>{@Overrideprotected Bitmap doInBackground(String... params) {try {InputStream inputStream=Utils.getInputStreamByPath(params[0]);if(inputStream!=null){return BitmapFactory.decodeStream(inputStream);}} catch (Exception e) {e.printStackTrace();}return null;}@Overrideprotected void onPostExecute(Bitmap bitmap) {if(bitmap!=null){Object localUrl=viewHolder.imageView_cover.getTag();if(localUrl!=null && cover.equals(localUrl)){viewHolder.imageView_cover.setImageBitmap(bitmap);}}}}new LoadImageAsyncTask().execute(cover);viewHolder.textView_title.setText(movie.getTitle());return convertView;}}class ViewHolder{ImageView imageView_cover;TextView textView_title;} }

前臺展示:

<1>一個movie_item展示

<2>一個footer_view展示

<3>一個activity_xml的展示


總結

以上是生活随笔為你收集整理的android 之ListView总结(一个综合实例)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。