XListView的简单使用

XListView的思路

新建项目,然后File-new-import module -选择我们的XlistView库导入,然后给App导入依赖.

导入后可能会有错误,这时别慌,稳住.

1.查看是否有Xlistviewlib文件夹

2.查看setting文件中 是否有, ':xlistviewlib'

3.build.gradle文件中26改成28

4.

修改成方框中这样

 5.导入网络权限

6.

==========================下面是Fragment=======================================

public class Fragment_01 extends Fragment {

    private XListView lv;
    private String url="http://www.xieast.com/api/news/news.php?page=";//接口路径
    private List<UserBean.DataBean> list;
    private List<UserBean.DataBean> lists = new ArrayList<>();
    private MyAdapter adapter;
    private int page=1;//接口分页中的数量

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_01,container,false);
        lv = (XListView) view.findViewById(R.id.lv);
        init();
        adapter = new MyAdapter(getActivity());
        lv.setAdapter(adapter);

        lv.setPullLoadEnable(true);//允许下拉刷新
        //下拉监听事件
        lv.setXListViewListener(new XListView.IXListViewListener() {
            @Override
            public void onRefresh() {
                //下拉刷新
                init();
            }

            @Override
            public void onLoadMore() {
                //上拉加载
                page++;
                init();
            }
        });
        return view;
    }

    private void init() {

        new AsyncTask<String,Void,String>(){

            private String s;

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                Gson gson = new Gson();
                UserBean bean = gson.fromJson(s, UserBean.class);
                list = bean.getData();
              //  Toast.makeText(getActivity(), list+"", Toast.LENGTH_SHORT).show();
                lists.addAll(list);//将所有的list数据存入lists中
                adapter.setList(lists);//adapter获取lists中的数据
                lv.stopRefresh();//停止下拉刷新
                lv.stopLoadMore();//停止上拉刷新
            }

            @Override
            protected String doInBackground(String... strings) {
                try {
                    URL url = new URL(strings[0]);
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.setConnectTimeout(5000);
                    connection.setReadTimeout(5000);
                    if(connection.getResponseCode()==HttpURLConnection.HTTP_OK){
                        InputStream inputStream = connection.getInputStream();
                        s = CharStreams.toString(new InputStreamReader(inputStream, "utf-8"));
                        return s;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }


                return null;
            }
        }.execute(url+page);

    }
}

==============================以下是adapter适配器==================================================

public class MyAdapter extends BaseAdapter {



    private Context context;
    private List<UserBean.DataBean> list=new ArrayList<>();

    public MyAdapter(Context context) {
        this.context = context;
    }

    public List<UserBean.DataBean> getList() {
        return list;
    }

    public void setList(List<UserBean.DataBean> list) {
        this.list = list;
        notifyDataSetChanged();
    }

//手动添加

    @Override
    public int getViewTypeCount() {
        return 2;
    }
    //判断listview条目中图片是否还有第二个图片,如果有第二张图片就执行return=1的方法,展示拖条目
    //如果没有第二张图片,就正常展示listview
    @Override
    public int getItemViewType(int position) {
        if(list.get(position).getThumbnail_pic_s02()!=null){
            return 1;
        }else{
            return 0;
        }
    }

    @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) {
        int itemViewType = getItemViewType(position);
        ViewHolder holder;
        ViewHolder1 viewHolder1;
        if(itemViewType==0){
           if(convertView==null){
               convertView = View.inflate(context,R.layout.item_tv,null);
               holder = new ViewHolder();
               holder.image = convertView.findViewById(R.id.image);
               holder.tv1 = convertView.findViewById(R.id.tv1);
               holder.tv2 = convertView.findViewById(R.id.tv2);
               convertView.setTag(holder);
           }else{
               holder = (ViewHolder) convertView.getTag();
           }
           ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),holder.image);
           holder.tv1.setText(list.get(position).getTitle());
           holder.tv2.setText(list.get(position).getAuthor_name());
        }else if(itemViewType==1){
            if(convertView==null){
                convertView = View.inflate(context,R.layout.lay_1,null);
                viewHolder1 = new ViewHolder1();
                viewHolder1.img1 = convertView.findViewById(R.id.img1);
                viewHolder1.img2 = convertView.findViewById(R.id.img2);
                viewHolder1.img3 = convertView.findViewById(R.id.img3);
                viewHolder1.title = convertView.findViewById(R.id.title);
                convertView.setTag(viewHolder1);
            }else{
                viewHolder1 = (ViewHolder1) convertView.getTag();
            }
            ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),viewHolder1.img1);
            ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s02(),viewHolder1.img2);
            ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s03(),viewHolder1.img3);
            viewHolder1.title.setText(list.get(position).getTitle());
        }
        return convertView;
    }

    class ViewHolder{
        TextView tv1,tv2;
        ImageView image;
    }
    class ViewHolder1{
        TextView title;
        ImageView img1,img2,img3;
    }


}

=============================以下是ImageLoader中的app类============================================

public class MyApp extends Application {

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

    }
}

=================================以下是侧拉菜单===================================================

public class MainActivity extends FragmentActivity {

    private FragmentManager manager;
    private ArrayList<Fragment> list;
    private ViewPager vp;
    private RadioGroup rg;
    private ListView listView;
    private List<String> titles = new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        titles.add("首页");
        titles.add("小视频");
        titles.add(" 我的");
        manager = getSupportFragmentManager();
        listView = findViewById(R.id.listview);
        list = new ArrayList<>();

        Fragment_01 fragment_01 = new Fragment_01();
        Fragment_02 fragment_02 = new Fragment_02();
        Fragment_03 fragment_03 = new Fragment_03();
        list.add(fragment_01);
        list.add(fragment_02);
        list.add(fragment_03);

        vp = (ViewPager) findViewById(R.id.vp);
        rg = (RadioGroup) findViewById(R.id.rg);
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, android.R.id.text1, titles);
        listView.setAdapter(arrayAdapter);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {



            }
        });
        vp.setAdapter(new FragmentPagerAdapter(manager) {
            @Override
            public Fragment getItem(int i) {
                return list.get(i);
            }

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

        rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId) {
                    case 1:
                        vp.setCurrentItem(0);
                        break;
                    case 2:
                        vp.setCurrentItem(1);
                        break;
                    case 3:
                        vp.setCurrentItem(2);
                        break;
                    case 4:
                        vp.setCurrentItem(3);
                        break;
                }
            }
        });

        vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int i, float v, int i1) {

            }

            @Override
            public void onPageSelected(int i) {
                    rg.check(rg.getChildAt(i).getId());
            }

            @Override
            public void onPageScrollStateChanged(int i) {

            }
        });



    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值