XRecyclerView 上拉加载 下拉刷新

来源:互联网 发布:同城配送软件 编辑:程序博客网 时间:2024/05/21 22:43

//对应xml布局

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main3"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.eightgroup.zk3lx.Main3Activity"><com.jcodecraeer.xrecyclerview.XRecyclerView    android:id="@+id/list"    android:layout_width="wrap_content"    android:layout_height="match_parent"></com.jcodecraeer.xrecyclerview.XRecyclerView></RelativeLayout>


//对应多条目的两个item.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="wrap_content"    android:layout_height="wrap_content">    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/tv"        />    <ImageView        android:layout_below="@+id/tv"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/img"        /></RelativeLayout>

//依赖包相关权限


    compile 'com.jcodecraeer:xrecyclerview:1.3.2'

    <uses-permission android:name="android.permission.INTERNET" />    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>    <application        android:name=".app.MyApp"

//下面就是主页面

public class Main3Activity extends AppCompatActivity {    String uri="http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.billboard.billList&type=1&size=10&offset=0 http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.billboard.billList&type=1&size=10&offset=0 ";    private XRecyclerView list;    private HomeAdapter mAdapter;    List<News.SongListBean> song_list;    ImageLoader imagerloder;    int i;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main3);      /*  mRecyclerView = (RecyclerView) findViewById(R.id.id_recyclerview);*/        list = (XRecyclerView)findViewById(R.id.list);        //listview的效果        list.setLayoutManager(new LinearLayoutManager(this));       //上啦下拉的监听        list.setLoadingListener(new XRecyclerView.LoadingListener() {            @Override            public void onRefresh() {                getData(uri);               list.refreshComplete();            }            @Override            public void onLoadMore() {                getData(uri);                list.loadMoreComplete();            }        });        getData(uri);    }    private void getData(String uri) {        OkHttp3Utils.getInstance().doGet(uri, new GsonObjectCallback<News>(){            @Override            public void onUi(News news) {                song_list = news.getSong_list();                list.setAdapter(mAdapter = new HomeAdapter());            }            @Override            public void onFailed(Call call, IOException e) {            }        });        }    class HomeAdapter extends RecyclerView.Adapter {        @Override        public XRecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {            //多条目判断用哪个Hoderl            if(getItemViewType(viewType)==1)            {                MyViewHolder holder = new MyViewHolder(LayoutInflater.from(                        Main3Activity.this).inflate(R.layout.layout1, parent,                    false));            return holder;        }else        {            MyViewHolder2 holder2 = new MyViewHolder2(LayoutInflater.from(                    Main3Activity.this).inflate(R.layout.layout2, parent,                    false));            return holder2;        }            //===============        }        @Override        public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {            if(getItemViewType(position)==1)            {                MyViewHolder holder1 = (MyViewHolder) holder;                holder1.tv.setText(song_list.get(position).getTitle());                imagerloder = ImageLoader.getInstance();                imagerloder.displayImage(song_list.get(position).getPic_big(), holder1.img);                // 获得该控件的所有属性          /*  ViewGroup.LayoutParams layoutParams = holder.tv.getLayoutParams();            Random random = new Random();            layoutParams.height = random.nextInt(200) + 50;            holder.tv.setLayoutParams(layoutParams);*/            }else {                    MyViewHolder2 holder2 = (MyViewHolder2) holder;                    holder2.tv1.setText(song_list.get(position).getTitle());                    imagerloder = ImageLoader.getInstance();                    imagerloder.displayImage(song_list.get(position).getPic_big(), holder2.img1);                    // 获得该控件的所有属性          /*  ViewGroup.LayoutParams layoutParams = holder.tv.getLayoutParams();            Random random = new Random();            layoutParams.height = random.nextInt(200) + 50;            holder.tv.setLayoutParams(layoutParams);*/            }        }        @Override        public int getItemCount() {            return song_list.size();        }        class MyViewHolder extends RecyclerView.ViewHolder {            ImageView img;            TextView tv;            public MyViewHolder(View view) {                super(view);                tv = (TextView) view.findViewById(R.id.tv);                img = (ImageView) view.findViewById(R.id.img);            }        }    // 对应第二个View        class MyViewHolder2 extends RecyclerView.ViewHolder {            ImageView img1;            TextView tv1;            public MyViewHolder2(View view) {                super(view);                tv1 = (TextView) view.findViewById(R.id.tv1);                img1= (ImageView) view.findViewById(R.id.img1);            }        }//返回的类型        @Override        public int getItemViewType(int position) {            if(position%2==0){                return 2;            }else            {                return 1;            }        }    }    }

public class MyApp extends Application {    public static MyApp mInstance;    @Override    public void onCreate() {        super.onCreate();        mInstance = this;        ImageLoaderConfiguration imgeLoader = ImageLoaderConfiguration.createDefault(getApplicationContext());        ImageLoader.getInstance().init(imgeLoader);    }    public static MyApp getInstance() {        return mInstance;    }}
//点击跳转 监听

    mAdapter.setOnItemClickLitener(new HomeAdapter.OnItemClickLitener()                {                    @Override                    public void onItemClick(View view, int position)                    {                        Toast.makeText(getActivity(), position + " click",                                Toast.LENGTH_SHORT).show();                        Intent intent = new Intent(getActivity(),Main3Activity.class);                        intent.putExtra("name",song_list.get(position).getAlbum_title().toString());                        intent.putExtra("song",song_list.get(position).getPic_big().toString());                        startActivity(intent);                    }                    @Override                    public void onItemLongClick(View view, int position)                    {                        Toast.makeText(getActivity(), position + " long click",                                Toast.LENGTH_SHORT).show();                    }                });
//跳转接收
public class Main3Activity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main3);        String name = getIntent().getStringExtra("name");        ImageView imageView = (ImageView)findViewById(R.id.main3_iamges);        TextView t = (TextView) findViewById(R.id.main3_text);        t.setText(name);        ImageLoader.getInstance().displayImage(getIntent().getStringExtra("song"),imageView);    }
//适配器调用 点击监听
public class HomeAdapter extends RecyclerView.Adapter {    Context context;    List<News.SongListBean> song_list;    ImageLoader imagerloder;    public interface OnItemClickLitener    {        void onItemClick(View view, int position);        void onItemLongClick(View view , int position);    }    private OnItemClickLitener mOnItemClickLitener;    public void setOnItemClickLitener(OnItemClickLitener mOnItemClickLitener)    {        this.mOnItemClickLitener = mOnItemClickLitener;    }    public HomeAdapter(Context context,  List<News.SongListBean> song_list) {        this.context = context;        this.song_list = song_list;    }    public XRecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        //多条目判断用哪个Hoderl        if(getItemViewType(viewType)==1)        {            MyViewHolder holder = new MyViewHolder(LayoutInflater.from(                    context).inflate(R.layout.layoutxx, parent,                    false));            return holder;        }else        {            MyViewHolder2 holder2 = new MyViewHolder2(LayoutInflater.from(                    context).inflate(R.layout.layoutxxx, parent,                    false));            return holder2;        }    }    @Override    public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {        if(getItemViewType(position)==1)        {            MyViewHolder holder1 = (MyViewHolder) holder;            holder1.tv.setText(song_list.get(position).getTitle());            imagerloder = ImageLoader.getInstance();            imagerloder.displayImage(song_list.get(position).getPic_big(), holder1.img);        }else {            MyViewHolder2 holder2 = (MyViewHolder2) holder;            holder2.tv1.setText(song_list.get(position).getTitle());            imagerloder = ImageLoader.getInstance();            imagerloder.displayImage(song_list.get(position).getPic_big(), holder2.img1);        }        if (mOnItemClickLitener != null) {            holder.itemView.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    int pos = holder.getLayoutPosition();                    mOnItemClickLitener.onItemClick(holder.itemView, pos);                }            });        }    }    @Override    public int getItemCount() {        return song_list.size();    }    class MyViewHolder extends RecyclerView.ViewHolder {        ImageView img;        TextView tv;        public MyViewHolder(View view) {            super(view);            tv = (TextView) view.findViewById(R.id.tv);            img = (ImageView) view.findViewById(R.id.img);        }    }    // 对应第二个View    class MyViewHolder2 extends RecyclerView.ViewHolder {        ImageView img1;        TextView tv1;        public MyViewHolder2(View view) {            super(view);            tv1 = (TextView) view.findViewById(R.id.tv1);            img1= (ImageView) view.findViewById(R.id.img1);        }    }    //返回的类型    @Override    public int getItemViewType(int position) {        if(position%2==0){            return 2;        }else        {            return 1;        }    }}
//对应的界面解析
public class Fragment extends android.support.v4.app.Fragment {    String uri = "http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.billboard.billList&type=1&size=10&offset=0 http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.billboard.billList&type=1&size=10&offset=0";    Banner mbanner;    /*int page = 0;*/    private XRecyclerView list;    private HomeAdapter mAdapter;    List<News.SongListBean> song_list;    ImageLoader imagerloder;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View view = LayoutInflater.from(getContext()).inflate(R.layout.layout1, null);        mbanner = (Banner) view.findViewById(R.id.mybanne);        list = (XRecyclerView) view.findViewById(R.id.list);        list.setLayoutManager(new LinearLayoutManager(getContext()));        getData(uri);        list.setPullRefreshEnabled(true);        list.setLoadingMoreEnabled(true);        list.setLoadingListener(new XRecyclerView.LoadingListener() {            @Override            public void onRefresh() {                getData(uri );                list.refreshComplete();            }            @Override            public void onLoadMore() {              /*  page += 1;*/                getData(uri);          /* song_list.addAll(song_list);*/                list.loadMoreComplete();            }        });        getData(uri);        return view;    }    private void getData(String uri) {        OkHttp3Utils.getInstance().doGet(uri, new GsonObjectCallback<News>() {            List<String> mlist = new ArrayList<String>();            @Override            public void onUi(News news) {                song_list = news.getSong_list();                list.setAdapter(mAdapter = new HomeAdapter(getActivity(),song_list));                mAdapter.setOnItemClickLitener(new HomeAdapter.OnItemClickLitener()                {                    @Override                    public void onItemClick(View view, int position)                    {                        Toast.makeText(getActivity(), position + " click",                                Toast.LENGTH_SHORT).show();                        Intent intent = new Intent(getActivity(),Main3Activity.class);                        intent.putExtra("name",song_list.get(position).getAlbum_title().toString());                        intent.putExtra("song",song_list.get(position).getPic_big().toString());                        startActivity(intent);                    }                    @Override                    public void onItemLongClick(View view, int position)                    {                        Toast.makeText(getActivity(), position + " long click",                                Toast.LENGTH_SHORT).show();                    }                });                for (int i = 0; i < song_list.size(); i++) {                    String ad1s = song_list.get(i).getPic_big();                    ;                    mlist.add(ad1s);                }                //设置图片加载器                mbanner.setImageLoader(new GlideImaGlideImageLoader());                mbanner.setImages(mlist);                mbanner.start();            }            @Override            public void onFailed(Call call, IOException e) {            }        });    }}

//Banner的类

public class GlideImaGlideImageLoader  extends ImageLoader {    @Override    public void displayImage(Context context, Object path, ImageView imageView) {        Glide.with(context).load(path).into(imageView);    }}
  getData(uri);        list.setPullRefreshEnabled(true);        list.setLoadingMoreEnabled(true);        list.setLoadingListener(new XRecyclerView.LoadingListener() {            @Override            public void onRefresh() {                getData(uri+0 );                list.refreshComplete();            }            @Override            public void onLoadMore() {                page += 1;                getData(uri+page);          /* song_list.addAll(song_list);*/                list.loadMoreComplete();            }        });        getData(uri);        return view;    }
public class HomeAdaper extends RecyclerView.Adapter { Context context;    List<Homes.DataBean> list;    ImageLoader imagerloder;    public HomeAdaper(Context context, List<Homes.DataBean> list) {        this.context = context;        this.list = list;    }    @Override    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {            MyViewHolder holder = new MyViewHolder(LayoutInflater.from(                    context).inflate(R.layout.layout1, parent,                    false));            return holder;    }    @Override    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {            MyViewHolder holder1 = (MyViewHolder) holder;            holder1.tv.setText(list.get(position).getNews_title());            imagerloder = ImageLoader.getInstance();            imagerloder.displayImage(list.get(position).getPic_url(), holder1.img);    }    @Override    public int getItemCount() {        return list.size();    }    class MyViewHolder extends RecyclerView.ViewHolder {        ImageView img;        TextView tv;        public MyViewHolder(View view) {            super(view);            tv = (TextView) view.findViewById(R.id.tv);            img = (ImageView) view.findViewById(R.id.img);        }    }}

//bannner轮播图

//相关权限

    compile 'com.youth.banner:banner:1.4.9'    compile 'com.github.bumptech.glide:glide:3.7.0'


//提成全局

ArrayList mlist;

  public void getNews(ArrayList<News.DataBean> list) {        recycler.setAdapter(homeadper =new HomeAdaper(Main2Activity.this,list));        mlist = new ArrayList();        for (int i = 0; i < list.size(); i++) {            mlist.add(list.get(i).getImage_url());        }        banner.setImageLoader(new GlideImageLoader());        banner.setImages(mlist);        banner.start();        homeadper.setOnItemClickLitener(new HomeAdaper.OnItemClickLitener()        {            @Override            public void onItemClick(View view, int position)            {                Toast.makeText(Main2Activity.this, position + " click",                        Toast.LENGTH_SHORT).show();                Intent intent = new Intent(Main2Activity.this,Main3Activity.class);                startActivity(intent);            }            @Override            public void onItemLongClick(View view, int position)            {                Toast.makeText(Main2Activity.this, position + " long click",                        Toast.LENGTH_SHORT).show();            }        });    }}




阅读全文
0 0
原创粉丝点击