/**
*先连接xlistview代码
*导架包Gson ImageLoader 的
**/
//布局
<com.bwie.xlistviewlibrary.View.XListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/xlv"> </com.bwie.xlistviewlibrary.View.XListView>
//主页面
import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import com.bwie.xlistviewlibrary.View.XListView; import com.google.gson.Gson; import java.util.ArrayList; import java.util.List;public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener{ private String url = "http://api.expoon.com/AppNews/getNewsList/type/1/p/"; private int p = 1; private XListView xlv; private List<User.DataBean> xlist = new ArrayList<User.DataBean>(); private XMadapter xadapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); xlv = findViewById(R.id.xlv); xlv.setPullLoadEnable(true); xlv.setPullRefreshEnable(true); xlv.setXListViewListener(this); xadapter = new XMadapter(MainActivity.this,xlist); xlv.setAdapter(xadapter); initx(url+p); stopx(); } private void initx(String s) { new MAsyTast().execute(s); } @Override public void onRefresh() { xlist.clear(); initx(url+p); stopx(); } @Override public void onLoadMore() { p++; initx(url+p); stopx(); } private class MAsyTast extends AsyncTask<String,Void,String>{ @Override protected String doInBackground(String... strings) { Url xurl = new Url(); String getjson = xurl.getjson(url); return getjson; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); User user = gson.fromJson(s, User.class); List<User.DataBean> data = user.getData(); xlist.addAll(data); xadapter.notifyDataSetChanged(); } } public void stopx(){ xlv.stopLoadMore(); xlv.stopRefresh(); xlv.setRefreshTime("刚发生的事情"); } }//适配器import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.List;class XMadapter extends BaseAdapter{ private Context context; private List<User.DataBean> xlist; private ViewHolder holder; public XMadapter(Context context, List<User.DataBean> xlist) { this.context = context; this.xlist = xlist; } @Override public int getCount() { return xlist.size(); } @Override public Object getItem(int i) { return xlist.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { if (view==null){ holder = new ViewHolder(); view=View.inflate(context,R.layout.item,null); holder.tv = view.findViewById(R.id.tv); holder.iv = view.findViewById(R.id.iv); view.setTag(holder); }else{ holder = (ViewHolder) view.getTag(); } holder.tv.setText(xlist.get(i).getNews_summary()); ImageLoader.getInstance().displayImage(xlist.get(i).getPic_url(),holder.iv); return view; } class ViewHolder{ private ImageView iv; private TextView tv; } }/***图片设置网络*<application* android:name=".Mapp"**/import android.app.Application; import android.os.Environment; import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache; import com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator; import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache; 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 java.io.File;public class Mapp extends Application { File cacheFile = new File(Environment.getExternalStorageDirectory() + "/" + "image"); @Override public void onCreate() { super.onCreate(); //初始化组件,链式开发思想,整个框架的参数初始化配置 //imageLoader的全局配置 ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this) .memoryCacheExtraOptions(480, 800) // default = device screen dimensions 内存缓存文件的最大长宽 .diskCacheExtraOptions(480, 800, null) // 本地缓存的详细信息(缓存的最大长宽),最好不要设置这个 .tasksProcessingOrder(QueueProcessingType.FIFO) // default .denyCacheImageMultipleSizesInMemory() .memoryCache(new LruMemoryCache(2 * 1024 * 1024)) //可以通过自己的内存缓存实现 .memoryCacheSize(2 * 1024 * 1024) // 内存缓存的最大值 .memoryCacheSizePercentage(13) // default .diskCacheSize(50 * 1024 * 1024) // 50 Mb sd卡(本地)缓存的最大值 .diskCacheFileCount(100) // 可以缓存的文件数量 .diskCache(new UnlimitedDiskCache(cacheFile))//自定义缓存目录 // default为使用HASHCODE对UIL进行加密命名, 还可以用MD5(new Md5FileNameGenerator())加密 .diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default .writeDebugLogs() // 打印debug log .build(); ImageLoader.getInstance().init(configuration); } }//数据网络连接import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL;public class Url { public String getjson(String url){ URL url1 = null; HttpURLConnection connection = null; String str = ""; try { url1 = new URL(url); connection = (HttpURLConnection) url1.openConnection(); connection.setConnectTimeout(8000); connection.setReadTimeout(8000); int code = connection.getResponseCode(); if (code == 200){ InputStream inputStream = connection.getInputStream(); byte[] b =new byte[1024]; int len = 0; while ((len = inputStream.read(b))!=-1){ str+=new String(b,0,len); } } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return str; } }