PullToRefreshListView實(shí)現(xiàn)多條目加載上拉刷新和下拉加載
本文實(shí)例為大家分享了Android九宮格圖片展示的具體代碼,供大家參考,具體內(nèi)容如下
XML布局
主頁(yè)面main布局
<com.handmark.pulltorefresh.library.PullToRefreshListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/pull" > </com.handmark.pulltorefresh.library.PullToRefreshListView>
pulllist布局
<ImageView android:layout_width="120dp" android:layout_height="100dp" android:id="@+id/iv" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv" />
java代碼
App頁(yè)面
package com.example.duanpengpenglx20171108;
import android.app.Application;
import com.nostra13.universalimageloader.cache.memory.impl.UsingFreqLimitedMemoryCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
/**
* Created by 朋 on 2017/11/8.
*/
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
ImageLoaderConfiguration config = new ImageLoaderConfiguration
.Builder(this)
.memoryCacheExtraOptions(480,800)
.threadPoolSize(5)
.threadPriority(Thread.NORM_PRIORITY - 2)
.denyCacheImageMultipleSizesInMemory()
.memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024)) // You can pass your own memory cache implementation/你可以通過自己的內(nèi)存緩存實(shí)現(xiàn)
.memoryCacheSize(2 * 1024 * 1024)
.tasksProcessingOrder(QueueProcessingType.LIFO)
.defaultDisplayImageOptions(DisplayImageOptions.createSimple())
.imageDownloader(new BaseImageDownloader(this, 5 * 1000, 30 * 1000)) // connectTimeout (5 s), readTimeout (30 s)超時(shí)時(shí)間
.writeDebugLogs() // Remove for release app
.build();//開始構(gòu)建
//初始化imageloader;
ImageLoader.getInstance().init(config);
}
}
MainActivity頁(yè)面
public class MainActivity extends AppCompatActivity {
List<Jbean.DataBean> arr = new ArrayList();
private View view;
private ListView lv;
private Adapter adapter;
int i = 0;
private PullToRefreshListView pull;
private Adapter adapter1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pull = (PullToRefreshListView) findViewById(R.id.pull);
pull.setMode(PullToRefreshBase.Mode.BOTH);
ListView lv = pull.getRefreshableView();
adapter1 = new Adapter();
lv.setAdapter(adapter1);
new MyAsyncTask().execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0");
pull.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
//上拉
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
arr.clear();
i = 0;
new MyAsyncTask().execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum=" + i);
}
@Override
//下拉加載20條
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
i = i + 20;new MyAsyncTask().execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum=" + i);
}
});
}
class MyAsyncTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
String string = "";
StringBuffer stringBuffer = new StringBuffer();
try {
URL url = new URL(params[0]);
URLConnection urlConnection = url.openConnection();
InputStream inputStream = urlConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
while ((string = bufferedReader.readLine()) != null) {
stringBuffer.append(string);
}
} catch (Exception e) {
e.printStackTrace();
}
return stringBuffer.toString();
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Jbean fragone_bean = new Gson().fromJson(s, Jbean.class);
List<Jbean.DataBean> data = fragone_bean.getData();
arr.addAll(data);
adapter1.notifyDataSetChanged();
pull.onRefreshComplete();
}
}
class Adapter extends BaseAdapter {
@Override
public int getCount() {
return arr.size();
}
@Override
public Object getItem(int position) {
return arr.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Sj sj = new Sj();
Jbean.DataBean dataBean = arr.get(position);
if (convertView==null){
convertView = View.inflate(MainActivity.this,R.layout.pulllist,null);
sj.image=convertView.findViewById(R.id.iv);
sj.tv=convertView.findViewById(R.id.tv);
convertView.setTag(sj);
}else {
sj =(Sj) convertView.getTag();
}
sj.tv.setText(dataBean.getSUBTITLE());
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisk(true)
.showImageOnLoading(R.drawable.zhengzaijiazai)
.showImageForEmptyUri(R.drawable.zhengzaijiazai)
.showImageOnFail(R.drawable.zhengzaijiazai)
.bitmapConfig(Bitmap.Config.RGB_565)
.build();
ImageLoader.getInstance().displayImage((String) dataBean.getIMAGEURL(),sj.image,options);
return convertView;
}
}
class Sj{
ImageView image;
TextView tv;
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- android ListView結(jié)合xutils3仿微信實(shí)現(xiàn)下拉加載更多
- Android ListView實(shí)現(xiàn)下拉加載功能
- Android仿網(wǎng)易一元奪寶客戶端下拉加載動(dòng)畫效果(一)
- Android實(shí)現(xiàn)仿慕課網(wǎng)下拉加載動(dòng)畫
- Android中使用RecyclerView實(shí)現(xiàn)下拉刷新和上拉加載
- Android下拉刷新上拉加載控件(適用于所有View)
- Android RecyclerView實(shí)現(xiàn)下拉刷新和上拉加載
- android開發(fā)教程之實(shí)現(xiàn)listview下拉刷新和上拉刷新效果
- Android實(shí)現(xiàn)上拉加載更多以及下拉刷新功能(ListView)
- Android RecyclerView 上拉加載更多及下拉刷新功能的實(shí)現(xiàn)方法
相關(guān)文章
Android Studio3.5開發(fā)工具(安卓開發(fā)工具)安裝步驟詳解
這篇文章主要為大家詳細(xì)介紹了Android Studio3.5開發(fā)工具安裝、安卓開發(fā)工具的安裝步驟,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09
Flutter 如何設(shè)置App的主色調(diào)與字體
App 開發(fā)過程中,肯定希望給用戶帶來一致的體驗(yàn),這其中最基礎(chǔ)的就是色調(diào)、字體保持一致。在 Flutter 中,可以設(shè)置全局的主題色調(diào)和字體,從而在其他頁(yè)面引用主色調(diào)和字體,實(shí)現(xiàn)頁(yè)面展示層面的一致。2021-05-05
Android框架Volley使用:ImageRequest請(qǐng)求實(shí)現(xiàn)圖片加載
這篇文章主要介紹了Android框架Volley使用:ImageRequest請(qǐng)求實(shí)現(xiàn)圖片加載的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-05-05
Android自定義view實(shí)現(xiàn)TextView方形輸入框
這篇文章主要為大家詳細(xì)介紹了Android自定義view實(shí)現(xiàn)TextView方形輸入框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06
Android之ProgressBar即時(shí)顯示下載進(jìn)度詳解
這篇文章主要為大家詳細(xì)介紹了Android之ProgressBar即時(shí)顯示下載進(jìn)度,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
Android編程實(shí)現(xiàn)在自定義對(duì)話框中獲取EditText中數(shù)據(jù)的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)在自定義對(duì)話框中獲取EditText中數(shù)據(jù)的方法,結(jié)合實(shí)例形式分析了Android對(duì)話框數(shù)據(jù)傳遞相關(guān)操作技巧,需要的朋友可以參考下2018-01-01
Android提高之模擬信號(hào)示波器的實(shí)現(xiàn)
這篇文章主要介紹了Android模擬信號(hào)示波器的實(shí)現(xiàn)方法,在Android項(xiàng)目開發(fā)中有一定的實(shí)用價(jià)值,需要的朋友可以參考下2014-08-08

