跳转传参,butterknife,xrecyclerview监听,刷新加载综合

来源:互联网 发布:深入浅出的数据分析 编辑:程序博客网 时间:2024/06/14 11:40

需要导的依赖包

  compile 'com.jcodecraeer:xrecyclerview:1.3.2'     compile 'com.squareup.okhttp:okhttp:2.4.0'    compile 'com.github.bumptech.glide:glide:4.0.0'    compile 'com.jakewharton:butterknife:8.5.1'    annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'     compile 'com.google.code.gson:gson:2.8.1'    compile 'com.orhanobut:logger:2.1.1'

MainActivity类

public class MainActivity extends AppCompatActivity implements XRecyclerView.LoadingListener, Myadapter.OnClickListener {    int page = 1;    String path = "http://www.yulin520.com/a2a/impressApi/news/mergeList?sign=C7548DE604BCB8A17592EFB9006F9265&pageSize=20&gender=2&ts=1871746850&page=" + page;    List<Data.DataBean> list = new ArrayList<>();    @BindView(R.id.xrecyclerview)    XRecyclerView xrecycler;    Myadapter adapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ButterKnife.bind(this);        loadData();        initview();    }    private void initview() {        // 对XRecycleView设置可以加载和刷新        xrecycler.setLoadingListener(this);        xrecycler.setPullRefreshEnabled(true);        //设置刷新风格        xrecycler.setLoadingMoreProgressStyle(ProgressStyle.BallPulseRise);        LinearLayoutManager lm = new LinearLayoutManager(this);        xrecycler.setLayoutManager(lm);    }    private void loadData() {        OkHttpClient ok = new OkHttpClient();        Request r = new Request.Builder().url(path).build();        ok.newCall(r).enqueue(new Callback() {            String strin;            @Override            public void onFailure(Request request, IOException e) {            }            @Override            public void onResponse(Response response) throws IOException {                strin = response.body().string();                runOnUiThread(new Runnable() {                    @Override                    public void run() {                        Data data = new Gson().fromJson(strin, Data.class);                        list.addAll(data.getData());                        Log.e("==============", "run: " + list.toString());                        Logger.addLogAdapter(new AndroidLogAdapter());                        Logger.d("hello");                        adapter = new Myadapter(list);                        xrecycler.setAdapter(adapter);                        adapter.setListener(MainActivity.this);                        adapter.notifyDataSetChanged();                    }                });            }        });    }    @Override    public void onRefresh() {        list.clear();        loadData();        xrecycler.loadMoreComplete();        xrecycler.refreshComplete();        adapter.notifyDataSetChanged();    }    @Override    public void onLoadMore() {        page++;        loadData();        xrecycler.loadMoreComplete();        xrecycler.refreshComplete();        adapter.notifyDataSetChanged();    }    /**     * 监听跳转传参     * @param v     * @param pag     */    @Override    public void listeren(View v,int pag) {        Toast.makeText(this, "点击", Toast.LENGTH_LONG).show();        Intent intent=new Intent(MainActivity.this,Tu.class);        intent.putExtra("user",list.get(pag).getImg());        startActivity(intent);    }}

跳转过来的界面

public class Tu extends AppCompatActivity {    @BindView(R.id.imageview)    ImageView imageView;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.tu);        ButterKnife.bind(this);        String user = getIntent().getStringExtra("user");        Glide.with(Tu.this).load(user).into(imageView);    }}

适配器类

public class Myadapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {    List<Data.DataBean> list;    OnClickListener listener;    public Myadapter(OnClickListener listener) {        this.listener = listener;    }    public void setListener(OnClickListener listener) {        this.listener = listener;    }    public Myadapter(List<Data.DataBean> list) {        this.list = list;    }    static class ViewHolder extends RecyclerView.ViewHolder {         @BindView(R.id.imagev)        ImageView imageView;        @BindView(R.id.txet)        TextView textView;        public ViewHolder(View itemView) {            super(itemView);            ButterKnife.bind(this,itemView);        }    }    @Override    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.xrecyclerviews, parent, false);       ButterKnife.bind(view);        ViewHolder holder = new ViewHolder(view);        return holder;    }    @Override    public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {        ((ViewHolder)holder).textView.setText(list.get(position).getTitle());        Glide.with( ((ViewHolder)holder).imageView).load(list.get(position).getImg()).into(((ViewHolder)holder).imageView);        ((ViewHolder)holder).imageView.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                if (listener!=null){                    listener.listeren(view,position);                }            }        });    }    @Override    public int getItemCount() {        return list.size();    }  public interface   OnClickListener{        void listeren(View v,int psg);    }}

activity_main布局

<com.jcodecraeer.xrecyclerview.XRecyclerView    android:id="@+id/xrecyclerview"    android:layout_width="match_parent"    android:layout_height="wrap_content"></com.jcodecraeer.xrecyclerview.XRecyclerView>

xrecyclerviews布局

<ImageView    android:id="@+id/imagev"    android:layout_width="match_parent"    android:layout_height="wrap_content"     />    <TextView        android:id="@+id/txet"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="dfgs"/>

tu布局

<ImageView    android:id="@+id/imageview"    android:layout_width="match_parent"    android:layout_height="wrap_content" />