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

本文介绍了一个使用XRecyclerView和OkHttp实现的Android新闻应用案例,包括依赖导入、MainActivity及Tu Activity的代码实现、适配器自定义以及Glide图片加载等关键技术细节。

需要导的依赖包

  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" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值