XListView和多条目应用

XListview和多条目应用//主页面//不要忘记权限////意图implementation project(’:xListView’)implementation ‘com.google.code.gson:gson:2.8.5’implementation’com.nostra13.universalimageloader:universal-image-loader:1.9...
摘要由CSDN通过智能技术生成

XListview和多条目应用

//主页面
//不要忘记权限
//
//意图
implementation project(’:xListView’)
implementation ‘com.google.code.gson:gson:2.8.5’
implementation’com.nostra13.universalimageloader:universal-image-loader:1.9.5’
//-------------------------------------------------------------------------------------------------

public class MainActivity extends AppCompatActivity {

private XListView xListView;
private  int page = 1;
private List<Datas>list1 = null;
private Handler handler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        switch (msg.what){
            case 0:
                xListView.stopRefresh();
                break;
            case 1:
                xListView.stopLoadMore();
                break;
        }
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //找控件
    xListView = findViewById(R.id.xlistView);
    //下拉刷新
    xListView.setPullRefreshEnable(true);
    //上拉加载
    xListView.setPullLoadEnable(true);
    //设置下拉和上拉的监听
    xListView.setXListViewListener(new XListView.IXListViewListener() {
        //下拉刷新
        @Override
        public void onRefresh() {
            //2秒停止刷新
            getRefreshTime();
            //重新刷新数据
            page=1;
            //获取网络数据
            getServerData();
            handler.sendEmptyMessageAtTime(0,5000);
        }

        //上拉加载
        @Override
        public void onLoadMore() {
            page++;
           getServerData();
           handler.sendEmptyMessageAtTime(1,5000);

        }
    });
    //默认获取数据
    getServerData();
    //获取当前系统时间
    getRefreshTime();
}

//获取当前系统时间
@SuppressLint("SimpleDateFormat")
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);
    xListView.setRefreshTime(s);
}

//默认获取数据
private void getServerData() {
    new MyAsync().execute();

}

//重写方法
private class MyAsync extends AsyncTask<String, Integer, String> {

    @Override
    protected String doInBackground(String... strings) {
        String path = "http://www.xieast.com/api/news/news.php?page="+page;

        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();
                //获取数据 传递给 onPostExecute
                String json = bos.toString();

                return json;

            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    //解析数据
    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        Log.i("xxx", s);
        Gson gson = new Gson();
        JsonBean fromJson = gson.fromJson(s, JsonBean.class);
        ArrayList<Datas> list = fromJson.getData();
        // Toast.makeText(MainActivity.this,list.toString(), Toast.LENGTH_SHORT).show();
       //page为1时创建集合
        if (page==1){
          list1=new ArrayList<>();
        }
        list1.addAll(list);
        MyAdapter myAdapter = new MyAdapter(MainActivity.this, list);
        xListView.setAdapter(myAdapter);

        xListView.setSelection(myAdapter.getCount()-29);
    }
}

}
//-------------------------------------------------------------------------------------
//适配器

public class MyAdapter extends BaseAdapter {
//条目类型从0开始
private final static int TYPE_ONE = 0;
private final static int TYPE_TWO = 1;

private Context context;
private ArrayList<Datas> list;
private  final DisplayImageOptions options;
public MyAdapter(Context context, ArrayList<Datas> list) {
    this.context = context;
    this.list = list;
 options=  new DisplayImageOptions.Builder()
         .displayer(new RoundedBitmapDisplayer(20))
         .build();



}

//条目类型数量
@Override
public int getViewTypeCount() {

    return 2;
}
//根据数据判断类型

@Override
public int getItemViewType(int position) {
    if (position == 3 || position == 5) {
        return TYPE_TWO;
    } else {
        return TYPE_ONE;

    }

}

@Override
public int getCount() {
    return list.size();
}

@Override
public Object getItem(int position) {
    return list.get(position);
}

@Override
public long getItemId(int position) {
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder1 viewHolder1 = null;
    ViewHolder2 viewHolder2 = null;
    //先获取条目类型
    int itemViewType = getItemViewType(position);
    if (convertView == null) {
        if (itemViewType == TYPE_ONE) {
            convertView = View.inflate(context, R.layout.item1, null);

            viewHolder1 = new ViewHolder1();

            viewHolder1.title1 = convertView.findViewById(R.id.tv_title1);
            viewHolder1.head1 = convertView.findViewById(R.id.iv_head1);

            convertView.setTag(viewHolder1);


        } else {
            convertView = View.inflate(context, R.layout.item2, null);

            viewHolder2 = new ViewHolder2();

            viewHolder2.title2 = convertView.findViewById(R.id.tv_title2);
            viewHolder2.head2 = convertView.findViewById(R.id.iv_head2);
            viewHolder2.head22 = convertView.findViewById(R.id.iv_head22);

            convertView.setTag(viewHolder2);
        }

    } else {
        //根据类型复用
        if (itemViewType == TYPE_ONE) {
            viewHolder1 = (ViewHolder1) convertView.getTag();
        } else {
            viewHolder2 = (ViewHolder2) convertView.getTag();
        }

        //根据类型获取数据展示
        if (itemViewType == TYPE_ONE) {

            viewHolder1.title1.setText(list.get(position).getTitle());

            ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(), viewHolder1.head1,options);
        } else {

            viewHolder2.title2.setText(list.get(position).getTitle());

            ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(), viewHolder2.head2,options);

            ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s02(), viewHolder2.head22,options);
        }

    }
    return convertView;
}

class ViewHolder1 {
    private TextView title1;
    private ImageView head1;
}

class ViewHolder2 {
    private TextView title2;
    private ImageView head2;
    private ImageView head22;
}

}

//-------------------------------------------------------------------------------------
//图片设置
package com.bwie.util;

import android.app.Application;

import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
//不要忘记权限
public class ImageLoderUtil extends Application {

@Override
public void onCreate() {
    super.onCreate();
    ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(this).build();
    ImageLoader.getInstance().init(build);
}

}

//xlistlibrary使用过程
1.解压
在这里插入图片描述
2.解压完之后进行导入
在这里插入图片描述
3.找到目录下的xlist的library包
在这里插入图片描述
4.改library包里的build.gradle里的
在这里插入图片描述
5.改完之进入xlistview清单文件中删除多余的东西就剩以下东西即可
在这里插入图片描述
6.删完之后进行引用
在这里插入图片描述
7.进行引用
在这里插入图片描述
在这里插入图片描述
8.引用完之后进行同步操作
引用完之后进行同步操作
(ps:在运行后面

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值