上拉刷新下拉加载&多条目展示
上拉下拉&获取网络数据
public class MainActivity extends AppCompatActivity {
private XlistView xlv;
private Handler handler = new Handler();
@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(new XlistView.IXListViewListener() {
@Override
public void onRefresh() {
//2秒停止刷新
//获取系统时间
getRefreshTime();
//获取网络数据
getServerData();
handler.postDelayed(new Runnable() {
@Override
public void run() {
xlv.stopRefresh();
}
}, 2000);
}
@Override
public void onLoadMore() {
//2秒停止加载
//获取网络数据
getServerData();
handler.postDelayed(new Runnable() {
@Override
public void run() {
xlv.stopLoadMore();
}
}, 2000);
}
});
//获取网络数据
getServerData();
//获取当前系统时间
getRefreshTime();
}
//获取当前系统时间
private void getRefreshTime() {
long time = System.currentTimeMillis();
Date date = new Date(time);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd日 HH:mm:ss");
String s = simpleDateFormat.format(date);
xlv.setRefreshTime(s);
}
//默认获取数据
private void getServerData() {
MyAsyncTask task = new MyAsyncTask();
task.execute();
}
private class MyAsyncTask extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... strings) {
String path = "http://www.xieast.com/api/news/news.php?page=1";
try {
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5000);
if (conn.getResponseCode() == 200) {
InputStream inputStream = conn.getInputStream();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
bos.close();
inputStream.close();
String json = bos.toString();
return json;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
Gson gson = new Gson();
News news = gson.fromJson(s, News.class);
List<News.DataBean> data = news.getData();
MyAdapter adapter = new MyAdapter(MainActivity.this, data);
xlv.setAdapter(adapter);
}
}}
图片配置
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
//全局配置详细自己配置
ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this)
.build();
//初始化
ImageLoader.getInstance().init(configuration);
}
}
适配器&listview优化
public class MyAdapter extends BaseAdapter {
private final static int TYPE_ONE = 0;
private final static int TYPE_TWO = 1;
private final static int TYPE_THREE = 2;
private Context context;
private ArrayList<News> list;
public MyAdapter(Context context, ArrayList<News> list) {
this.context = context;
this.list = list;
}
@Override
public int getViewTypeCount() {
return 3;
}
@Override
public int getItemViewType(int position) {
if (position%3==0) {
return TYPE_ONE;
} else if (position%3==1) {
return TYPE_TWO;
} else {
return TYPE_THREE;
}
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHandler1 viewHandler1 = null;
ViewHandler2 viewHandler2 = null;
ViewHandler3 viewHandler3 = null;
int type = getItemViewType(position);
if (convertView == null) {
if (type == TYPE_ONE) {
convertView = View.inflate(context, R.layout.item1, null);
viewHandler3 = new ViewHandler3();
viewHandler3.text3 = convertView.findViewById(R.id.text3);
viewHandler3.img3 = convertView.findViewById(R.id.img3);
viewHandler3.img33 = convertView.findViewById(R.id.img33);
viewHandler3.img333 = convertView.findViewById(R.id.img333);
convertView.setTag(viewHandler3);
} else if (type == TYPE_TWO) {
convertView = View.inflate(context, R.layout.item2, null);
viewHandler2 = new ViewHandler2();
viewHandler2.text2 = convertView.findViewById(R.id.text2);
viewHandler2.img2 = convertView.findViewById(R.id.img2);
viewHandler2.img22 = convertView.findViewById(R.id.img22);
convertView.setTag(viewHandler2);
} else {
convertView = View.inflate(context, R.layout.item3, null);
viewHandler1 = new ViewHandler1();
viewHandler1.text1 = convertView.findViewById(R.id.text1);
viewHandler1.img1 = convertView.findViewById(R.id.img1);
convertView.setTag(viewHandler1);
}
} else {
if (type == TYPE_ONE) {
viewHandler3 = (ViewHandler3) convertView.getTag();
} else if (type == TYPE_TWO) {
viewHandler2 = (ViewHandler2) convertView.getTag();
} else {
viewHandler1 = (ViewHandler1) convertView.getTag();
}
}
News news = list.get(position);
if (type == TYPE_ONE) {
viewHandler3.text3.setText(news.getTitle());
ImageLoader.getInstance().displayImage(news.getThumbnail_pic_s(), viewHandler3.img3);
ImageLoader.getInstance().displayImage(news.getThumbnail_pic_s02(), viewHandler3.img33);
ImageLoader.getInstance().displayImage(news.getThumbnail_pic_s03(), viewHandler3.img333
);
} else if (type == TYPE_TWO) {
viewHandler2.text2.setText(news.getTitle());
ImageLoader.getInstance().displayImage(news.getThumbnail_pic_s(), viewHandler2.img2);
ImageLoader.getInstance().displayImage(news.getThumbnail_pic_s02(), viewHandler2.img22);
} else {
viewHandler1.text1.setText(news.getTitle());
ImageLoader.getInstance().displayImage(news.getThumbnail_pic_s(), viewHandler1.img1);
}
return convertView;
}
class ViewHandler1 {
private ImageView img1;
private TextView text1;
}
class ViewHandler2 {
private ImageView img2;
private ImageView img22;
private TextView text2;
}
class ViewHandler3 {
private ImageView img3;
private ImageView img33;
private ImageView img333;
private TextView text3;
}}