Recyclerview三种布局获取数据+Springview刷新

来源:互联网 发布:wordpress转zblog php 编辑:程序博客网 时间:2024/06/05 09:23

//依赖

compile 'com.android.support:recyclerview-v7:25.0.0-alpha1'

    compile 'com.jakewharton:butterknife:8.8.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

    compile files('libs/universal-image-loader-1.9.3-with-sources.jar')
    //glide加载图片
    compile 'com.github.bumptech.glide:glide:4.3.1'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.3.1'
    //分割线
    compile 'com.yqritc:recyclerview-flexibledivider:1.4.0'

    compile 'com.liaoinstan.springview:library:1.3.0'

//RecyclerviewViewHolder

package le..comrecyclerview;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;

import java.util.List;
import java.util.Random;

import butterknife.BindView;
import butterknife.ButterKnife;

/**
 * Create
 */

public class RecyclerviewViewHolder extends RecyclerView.Adapter<RecyclerviewViewHolder.ImagerViewHolder> {

    private Context context;
    private List<String> list;
    private int itemWidth ;
    public RecyclerviewViewHolder(Context context, List<String> list) {
        this.context = context;
        this.list = list;

        WindowManager wm = (WindowManager) context
                .getSystemService(Context.WINDOW_SERVICE);

        int width = wm.getDefaultDisplay().getWidth();
        itemWidth = width / 3 ;

    }

    @Override
    public ImagerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View view = LayoutInflater.from(context).inflate(R.layout.activity_item,null);

        return new ImagerViewHolder(view);
    }

    @Override
    public void onBindViewHolder(ImagerViewHolder holder, final int position) {


        ViewGroup.LayoutParams params =  holder.img.getLayoutParams() ;

        int itemHeight = 300 ;

        itemHeight = new Random().nextInt(500);
        if(itemHeight < 300){
            itemHeight = 300 ;
        }

        params.width = itemWidth ;
        params.height = itemHeight ;

        holder.img.setLayoutParams(params);

        // 显示图片
        Glide.with(context).load(list.get(position)).into(holder.img);

           holder.textView.setText(position+"");

        holder.img.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (lister!=null){

                    lister.onClick(v,position);
                }
            }
        });



    }

    @Override
    public int getItemCount() {

        return list.size();
    }

    static class ImagerViewHolder extends RecyclerView.ViewHolder {
        @BindView(R.id.img)
        ImageView img;
        @BindView(R.id.textview)
        TextView textView;
        public ImagerViewHolder(View itemView) {
            super(itemView);
            ButterKnife.bind(this, itemView);
        }

    }

    private  Lister lister;

    public void setILister(Lister lister){

        this.lister=lister;
    }


    public  interface Lister{

        public  void  onClick(View view,int position);
        public void  longClick(View view,int position);
    }


}


//MainActivity

package le.wie.com.lanrecyclerview;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Toast;

import com.liaoinstan.springview.container.DefaultFooter;
import com.liaoinstan.springview.container.DefaultHeader;
import com.liaoinstan.springview.widget.SpringView;
import com.yqritc.recyclerviewflexibledivider.HorizontalDividerItemDecoration;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
   private RecyclerView recyclerView;
    private List<String> list=new ArrayList<>();
    private SpringView springView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        recyclerView= (RecyclerView) findViewById(R.id.recyclerview);

        list.add("http://f10.baidu.com/it/u=2881303562,336932824&fm=72");
        list.add("http://f11.baidu.com/it/u=681755471,2018070071&fm=72");
        list.add("http://f10.baidu.com/it/u=960650584,863938083&fm=72");
        list.add("http://img0.imgtn.bdimg.com/it/u=783060973,4278100629&fm=27&gp=0.jpg");
        list.add("http://img1.imgtn.bdimg.com/it/u=3743124979,3234956668&fm=27&gp=0.jpg");
        list.add("http://img4.imgtn.bdimg.com/it/u=3468613159,957707785&fm=27&gp=0.jpg");
        list.add("http://img3.imgtn.bdimg.com/it/u=2971205354,485034289&fm=27&gp=0.jpg");


        list.add("http://f10.baidu.com/it/u=2881303562,336932824&fm=72");
        list.add("http://f11.baidu.com/it/u=681755471,2018070071&fm=72");
        list.add("http://f10.baidu.com/it/u=960650584,863938083&fm=72");
        list.add("http://img0.imgtn.bdimg.com/it/u=783060973,4278100629&fm=27&gp=0.jpg");
        list.add("http://img1.imgtn.bdimg.com/it/u=3743124979,3234956668&fm=27&gp=0.jpg");
        list.add("http://img4.imgtn.bdimg.com/it/u=3468613159,957707785&fm=27&gp=0.jpg");
        list.add("http://img3.imgtn.bdimg.com/it/u=2971205354,485034289&fm=27&gp=0.jpg");

        recyclerView.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false));
        //recyclerView.setLayoutManager(new GridLayoutManager(this,5));   //网格布局
       // recyclerView.setLayoutManager(new StaggeredGridLayoutManager(3, LinearLayout.VERTICAL));//瀑布流
        RecyclerviewViewHolder adapter=   new RecyclerviewViewHolder(this,list);//列表
         recyclerView.setAdapter(adapter);

             adapter.setILister(new RecyclerviewViewHolder.Lister() {
                 @Override
                 public void onClick(View view, int position) {
                     Toast.makeText(MainActivity.this, ""+position, Toast.LENGTH_SHORT).show();
                 }

                 @Override
                 public void longClick(View view, int position) {

                 }
             });
       recyclerView.addItemDecoration(new HorizontalDividerItemDecoration.Builder(this).color(Color.RED).build());

        //刷新
        springView = (SpringView) findViewById(R.id.springview);

        springView.setHeader(new DefaultHeader(this));
        springView.setFooter(new DefaultFooter(this));


        springView.setListener(new SpringView.OnFreshListener() {
            @Override
            public void onRefresh() {
                //下啦

                springView.onFinishFreshAndLoad();
            }

            @Override
            public void onLoadmore() {
// 上啦
                springView.onFinishFreshAndLoad();

            }
        });

//        adapter.notifyDataSetChanged();

    }

}
//activity——main

<?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_main"
    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="lee.ie.com.nrecyclerview.MainActivity">


       <com.liaoinstan.springview.widget.SpringView
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:id="@+id/springview"
           >
       <android.support.v7.widget.RecyclerView
           android:id="@+id/recyclerview"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content">

       </android.support.v7.widget.RecyclerView>

       </com.liaoinstan.springview.widget.SpringView>

</RelativeLayout>

//item

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/img"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:src="@mipmap/ic_launcher"
        />

    <TextView
        android:id="@+id/textview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="111"
        />

</LinearLayout>