/**
* 导 xlistview 的代码
*导依赖(架包)
**/
<com.bwie.xlistviewlibrary.View.XListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/dxlv"/>
//主页面
import android.content.Intent; import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; 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 dxlv; private List<User.DataBean> dlist = new ArrayList<User.DataBean>(); private DtmAdapter dtmAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); dxlv = findViewById(R.id.dxlv); dxlv.setPullLoadEnable(true); dxlv.setPullRefreshEnable(true); dxlv.setXListViewListener(this); dtmAdapter = new DtmAdapter(MainActivity.this,dlist); dxlv.setAdapter(dtmAdapter); initdx(url+p); stopdx(); //点击跳转到百度(WebView) dxlv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Intent intent = new Intent(MainActivity.this,Main2Activity.class); startActivity(intent); } }); } private void initdx(String s) { new DtmAsyTast().execute(s); } @Override public void onRefresh() { dlist.clear(); initdx(url+p); stopdx(); } @Override public void onLoadMore() { p++; initdx(url+p); stopdx(); } private class DtmAsyTast extends AsyncTask<String,Void,String> { @Override protected String doInBackground(String... strings) { Util util = new Util(); String getjson = util.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(); dlist.addAll(data); dtmAdapter.notifyDataSetChanged(); } } private void stopdx() { dxlv.stopRefresh(); dxlv.stopLoadMore(); dxlv.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 DtmAdapter extends BaseAdapter{ private Context context; private List<User.DataBean> dlist; private final int tt = 0; private final int ss =1; public DtmAdapter(Context context, List<User.DataBean> dlist) { this.context = context; this.dlist = dlist; } @Override public int getCount() { return dlist.size(); } @Override public Object getItem(int i) { return dlist.get(i); } @Override public long getItemId(int i) { return i; } @Override public int getItemViewType(int position) { return position%getViewTypeCount(); } @Override public int getViewTypeCount() { return 2; } @Override public View getView(int i, View view, ViewGroup viewGroup) { int ivt = getItemViewType(i); ViewHolder holder = new ViewHolder(); if (view == null){ switch (ivt){ case tt: view = View.inflate(context,R.layout.item,null); holder.img = view.findViewById(R.id.img); holder.text1 = view.findViewById(R.id.text1); break; case ss: view = View.inflate(context,R.layout.item2,null); holder.text2 = view.findViewById(R.id.text2); break; } view.setTag(holder); }else { holder = (ViewHolder) view.getTag(); switch (ivt){ case tt: holder.text1.setText(dlist.get(i).getNews_title()); ImageLoader.getInstance().displayImage(dlist.get(i).getPic_url(),holder.img); break; case ss: holder.text2.setText(dlist.get(i).getNews_summary()); break; } } return view; } class ViewHolder{ private ImageView img; private TextView text1,text2; } }/***图片加载*<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;class Util { 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; } }//跳转其他网页(例:百度)---布局<WebView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/web"/>//网页连接页面import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.webkit.WebView; public class Main2Activity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); WebView web = findViewById(R.id.web); web.loadUrl("https://www.baidu.com/"); } }