主页
在这里插入代码片package com.example.dell.myapplicationday1207;
import android.annotation.SuppressLint;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.google.gson.Gson;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import me.maxwin.view.XListView;
public class MainActivity extends AppCompatActivity {
private XListView lists;
private NewsAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//寻找资源
lists = findViewById(R.id.list_item);
//设置适配器
adapter = new NewsAdapter(this);
lists.setAdapter(adapter);
//下啦刷新
lists.setPullLoadEnable(true);
//给Xlist 设置监听事件
lists.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {//刷新
page=1;
//初始化数据
initData();
}
@Override
public void onLoadMore() { //下载
initData();
}
});
page=1;
initData();
}
//接口的 位置
private int page=1;
private final int count=10;
private String apiURL="http://172.17.8.100/movieApi/movie/v1/findHotMovieList?";
@SuppressLint("StaticFieldLeak")
private void initData() {
AsyncTask<String, Void, List<Bean.Data>> asyncTask = new AsyncTask<String, Void, List<Bean.Data>>() {
@Override
protected List<Bean.Data> doInBackground(String... strings) {
try {
URL url = new URL(strings[0]);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setConnectTimeout(5000);
urlConnection.setReadTimeout(5000);
int responseCode = urlConnection.getResponseCode();
if (responseCode==200){
String result=stream2String(urlConnection.getInputStream());
Gson gson = new Gson();
Bean bean = gson.fromJson(result, Bean.class);
return bean.getResult();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(List<Bean.Data> datas) {
//数据进行判断
if (datas==null){
lists.stopLoadMore();
lists.stopRefresh();
return;
}
if (page==1){//刷新
adapter.setList(datas);
}else{//下载
adapter.addData(datas);
}
//如果没有下一页了 则停止加载
lists.setPullLoadEnable(datas.size()>=count);
lists.stopRefresh();
lists.stopLoadMore();
page++;
}
}.execute(apiURL+"page="+page+"&count="+count);
}
private String stream2String(InputStream inputStream) throws IOException {
StringBuilder stringBuilder = new StringBuilder();
InputStreamReader ir = new InputStreamReader(inputStream);
BufferedReader br = new BufferedReader(ir);
for (String tmp=br.readLine();tmp!=null;tmp=br.readLine()){
stringBuilder.append(tmp);
}
return stringBuilder.toString();
}
}
图片设置
package com.example.dell.myapplicationday1207;
import android.app.Application;
import android.graphics.Bitmap;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this)
.memoryCacheSize(10)
.diskCacheSize(10*1024*1024)
.defaultDisplayImageOptions(new DisplayImageOptions.Builder()
.bitmapConfig(Bitmap.Config.RGB_565)
.showImageOnFail(R.mipmap.ic_launcher)
.showImageForEmptyUri(R.mipmap.ic_launcher)
.showImageOnLoading(R.mipmap.ic_launcher)
.cacheInMemory(true)
.cacheOnDisk(true)
.build()
).build();
ImageLoader.getInstance().init(configuration);
}
}
Bean类
package com.example.dell.myapplicationday1207;
import java.io.Serializable;
import java.util.List;
public class Bean {
private String message;
private String status;
private List<Data> result;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public List<Data> getResult() {
return result;
}
public void setResult(List<Data> result) {
this.result = result;
}
class Data{
private String name;
private String summary;
private String imageUrl;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSummary() {
return summary;
}
public void setSummary(String summary) {
this.summary = summary;
}
public String getImageUrl() {
return imageUrl;
}
public void setImageUrl(String imageUrl) {
this.imageUrl = imageUrl;
}
}
}
适配器
在这里插入代码片package com.example.dell.myapplicationday1207;
import android.content.Context;
import android.support.v4.app.FragmentManager;
import android.view.LayoutInflater;
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.ArrayList;
import java.util.List;
import java.util.TreeMap;
public class NewsAdapter extends BaseAdapter {
private Context context;
private List<Bean.Data> list;
public NewsAdapter(Context context) {
this.context = context;
list=new ArrayList<>();
}
//更新放法
public void setList(List<Bean.Data> list) {
if (list!=null){
this.list = list;
}
notifyDataSetChanged();
}
//追加数据
public void addData(List<Bean.Data> b){
if (b!=null){
list.addAll(b);
}
notifyDataSetChanged();
}
@Override
public int getCount() {
return list.size();
}
@Override
public Bean.Data getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView==null){
viewHolder = new ViewHolder();
convertView=LayoutInflater.from(context).inflate(R.layout.xlist,parent,false);
viewHolder.text = convertView.findViewById(R.id.text1);
viewHolder.title = convertView.findViewById(R.id.title1);
viewHolder.img = convertView.findViewById(R.id.image01);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.title.setText(list.get(position).getName());
viewHolder.text.setText(list.get(position).getSummary());
ImageLoader.getInstance().displayImage(list.get(position).getImageUrl(),viewHolder.img);
return convertView;
}
class ViewHolder{
TextView text;
TextView title;
ImageView img;
}
}