1.导包,加权限,关联imageloasder,创建布局
2.HttpUtils请求数据
package com.example.utils;
import android.os.AsyncTask;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* Created by lenovo on 2018/7/15.
*/
public class HttpUtils {
private gethttplisten gethttplisten;
private static HttpUtils httpUtils;
//单例
public static HttpUtils getinstance(){
if(httpUtils==null){
httpUtils =new HttpUtils();
}
return httpUtils;
}
//创建方法
public void getdata(String url){
Myasync myasync = new Myasync();
myasync.execute(url);
}
//创建方法继承async
public class Myasync extends AsyncTask<String,Integer,String>{
//耗时
@Override
protected String doInBackground(String... params) {
//创建路径
String path =params[0];
//写入方法
try {
URL url = new URL(path);
//网络请求
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//设置演示
connection.setConnectTimeout(5000);
//设置读取
connection.setReadTimeout(5000);
//设置请求方式
connection.setRequestMethod("GET");
//判断
if(connection.getResponseCode()==200){
//创建输入流
InputStream inputStream = connection.getInputStream();
//创建输出流
ByteArrayOutputStream bos = new ByteArrayOutputStream();
//创建数组
byte[] bytes = new byte[1024];
//创建长度
int len =0;
//遍历
while ((len=inputStream.read(bytes))!=-1){
//写入
bos.write(bytes,0,len);
}
//关流
inputStream.close();
bos.close();
//创建方法
String json = bos.toString();
return json;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//更新ui
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
//接收
gethttplisten.getjson(s);
}
}
//创建接口
public interface gethttplisten{
//重写方法
public void getjson(String json);
}
//向外调用接口
public void sethttplisten(gethttplisten gethttplisten){
this.gethttplisten =gethttplisten;
}
}
3.设置ImageLoader请求
package com.example.app;
import android.app.Application;
import com.bwei.imageloaderlibrary.utils.ImageLoaderUtils;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
/**
* Created by lenovo on 2018/7/15.
*/
public class imgageloader extends Application {
@Override
public void onCreate() {
super.onCreate();
//创建请求
ImageLoaderConfiguration configuration = ImageLoaderUtils.getConfiguration(this);
ImageLoader.getInstance().init(configuration);
}
}
4.Fragment与viewpager切换
package com.example.day04xlistview04;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.RadioGroup;
import com.example.adapter.myadapter;
import com.example.fragment.frag1;
import com.example.fragment.frag2;
import com.example.fragment.frag3;
import java.util.ArrayList;
private ViewPager viewpage;
private RadioGroup rap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化
viewpage = findViewById(R.id.viewpage);
rap = findViewById(R.id.rap);
//创建fragment
//创建对象
frag1 frag1 = new frag1();
frag2 frag2 = new frag2();
frag3 frag3 = new frag3();
//创建集合
ArrayList<Fragment> list = new ArrayList<>();
//对象添加到集合中
list.add(frag1);
list.add(frag2);
list.add(frag3);
//创建适配器
myadapter myadapter = new myadapter(getSupportFragmentManager(),list);
viewpage.setAdapter(myadapter);
//创建监听方法
viewpage.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
rap.check(rap.getChildAt(position).getId());
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
//按钮的点击事件
rap.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
switch (i){
case R.id.rap1:
viewpage.setCurrentItem(0);
break;
case R.id.rap2:
viewpage.setCurrentItem(1);
break;
case R.id.rap3:
viewpage.setCurrentItem(2);
break;
default:
break;
}
}
});
}
}
5.Fragment的适配器
package com.example.adapter;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.List;
/**
* Created by lenovo on 2018/7/15.
*/
public class myadapter extends FragmentPagerAdapter {
private List<Fragment> list;
public myadapter(FragmentManager fm, List<Fragment> list) {
super(fm);
this.list = list;
}
@Override
public Fragment getItem(int position) {
return list.get(position);
}
@Override
public int getCount() {
return list.size();
}
}
6.Xlistview的适配器,包括(图片路径缓存,多条目)
package com.example.adapter;
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.bwei.imageloaderlibrary.utils.ImageLoaderUtils;
import com.example.bean.news;
import com.example.day04xlistview04.R;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.List;
/**
* Created by lenovo on 2018/7/15.
*/
public class my1adapter extends BaseAdapter {
private Context context;
private List<news.DataBean> list;
private final int one =0;
private final int two =1;
public my1adapter(Context context, List<news.DataBean> list) {
this.context = context;
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return list.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
//多条目加载
@Override
public int getViewTypeCount() {
return 2;
}
//类型
@Override
public int getItemViewType(int position) {
String pic1 = list.get(position).getThumbnail_pic_s();
String pic2 = list.get(position).getThumbnail_pic_s02();
String pic3 = list.get(position).getThumbnail_pic_s03();
if(pic1!=null&&pic2==null&&pic3==null){
return one;
}else if(pic1!=null&&pic2!=null&&pic3!=null){
return two;
}else {
return one;
}
}
@Override
public View getView(int i, View convertView, ViewGroup viewGroup) {
//获取int值
int itemViewType = getItemViewType(i);
//判断
if(itemViewType==0){
//初始化
viewholder h =null;
if(convertView==null){
convertView= View.inflate(context, R.layout.include1, null);
h =new viewholder();
h.title1 = convertView.findViewById(R.id.title1);
h. img01 = convertView.findViewById(R.id.img01);
convertView.setTag(h);
}else {
h = (viewholder) convertView.getTag();
}
h.title1.setText(list.get(i).getTitle());
DisplayImageOptions options = ImageLoaderUtils.getOptions();
ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s(),h.img01,options);;
return convertView;
}else if(itemViewType==1){
viewholder h =null;
if(convertView==null){
convertView= View.inflate(context, R.layout.include2, null);
h =new viewholder();
h.title2 = convertView.findViewById(R.id.title2);
h. img02 = convertView.findViewById(R.id.img02);
h. img03 = convertView.findViewById(R.id.img03);
h. img04 = convertView.findViewById(R.id.img04);
convertView.setTag(h);
}else {
h = (viewholder) convertView.getTag();
}
h.title2.setText(list.get(i).getTitle());
ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s(),h.img02);;
ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s02(),h.img03);;
ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s03(),h.img04);;
return convertView;
}
return null;
}
//优化
public class viewholder {
TextView title1;
TextView title2;
ImageView img01;
ImageView img02;
ImageView img03;
ImageView img04;
}
}
7.XListView, 包括(分页,Gson解析,接口回调)
package com.example.fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.adapter.my1adapter;
import com.example.bean.news;
import com.example.day04xlistview04.R;
import com.example.utils.HttpUtils;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
import view.XListView;
/**
* Created by lenovo on 2018/7/15.
*/
public class frag1 extends Fragment{
private my1adapter my1adapter;
private XListView x_listview;
private String path ="http://www.xieast.com/api/news/news.php?page=";
private int page =1;
private HttpUtils httpUtils = HttpUtils.getinstance();
private List<com.example.bean.news.DataBean> list =new ArrayList<>();
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//创建布局
View view = inflater.inflate(R.layout.frag1, container, false);
x_listview = view.findViewById(R.id.x_listview);
return view;
}
//逻辑代码写在onactivitycreate中
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getfromid();
getfrondatanetwork();
}
private void getfromid() {
//设置是否可以刷新
x_listview.setPullRefreshEnable(true);
//s设置是否可以加载
x_listview.setPullLoadEnable(true);
//设置监听事件
x_listview.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {
page =1;
//调用网络
getfrondatanetwork();
}
@Override
public void onLoadMore() {
page+=1;
//调用网络
getfrondatanetwork();
}
});
//创建适配器
my1adapter = new my1adapter(getActivity(),list);
x_listview.setAdapter(my1adapter);
}
private void getfrondatanetwork() {
String url =path+page;
//设置路径
httpUtils.getdata(url);
//接口回调
httpUtils.sethttplisten(new HttpUtils.gethttplisten() {
@Override
public void getjson(String json) {
//解析
Gson gson = new Gson();
//解析内容
news news = gson.fromJson(json, news.class);
//获取指定的方法
List<com.example.bean.news.DataBean> data = news.getData();
if(page==1){
list.clear();
}
list.addAll(data);
//刷新适配器
my1adapter.notifyDataSetChanged();
if(page==1){
//停止刷新
x_listview.stopRefresh();
}else {
//停止加载
x_listview.stopLoadMore();
}
}
});
}
}