retrofit+RecyclerView+SwipeRefreshLayout下拉刷新上拉加载+item点击

//接口ApiService
public interface ApiService {
    //http://app.vmoiver.com/apiv3/post/getPostInCate?cateid=0&p=1
    @GET("/apiv3/post/getPostInCate?cateid=0&p=1")
    Call<Bean> getList();

}
//item点击接口
public interface OnItemClickLitener {
    void onItemClick(View view, int position);
}


//adapter
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private List<Bean.DataBean> list;
    private Context context;

    public RecyclerAdapter(List<Bean.DataBean> list, Context context) {
        this.list = list;
        this.context = context;
    }
 private OnItemClickLitener mOnItemClickLitener;

 public void setOnItemClickLitener(OnItemClickLitener mOnItemClickLitener) {
    this.mOnItemClickLitener = mOnItemClickLitener;
}
@Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { LayoutInflater view = LayoutInflater.from(context); View inflate = view.inflate(R.layout.one_item,null); OneViewHolder viewHolder = new OneViewHolder(inflate); return viewHolder; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { ((OneViewHolder) holder).oneText.setText(list.get(position).title);
           if (mOnItemClickLitener != null) {
               holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                  mOnItemClickLitener.onItemClick(viewHolder.itemView, position);
                  ObjectAnimator
                     .ofFloat(v, "rotationX", 0.0F, 360.0F)
                     .setDuration(500)
                     .start();
        }
    });
}

 }
@Override

public int getItemCount() {

return list == null ? 0 : list.size();
}


public class OneViewHolder extends RecyclerView.ViewHolder {
public TextView oneText;

public OneViewHolder(View itemView) {

super(itemView);

oneText = (TextView) itemView.findViewById(R.id.one_text);

}
}}

//main主类


public class MainActivity extends AppCompatActivity {
    private SwipeRefreshLayout swip;
    private String urlPath = "http://app.vmoiver.com/apiv3/post/getPostInCate?cateid=0&p=1";
    private RecyclerView recyclerView;
    private RecyclerAdapter adapter;
    private List<Bean.DataBean> list = new ArrayList<>();
    private LinearLayoutManager lin;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        swip=(SwipeRefreshLayout)findViewById(R.id.swip);
        recyclerView = (RecyclerView) findViewById(R.id.recycler);

        swip.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                loadData();
                adapter.notifyDataSetChanged();
                swip.setRefreshing(false);
            }
        });

        loadData();
        lin = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(lin);
        recyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
        adapter = new RecyclerAdapter(list, this);
        recyclerView.setAdapter(adapter);
        recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
                if(newState==RecyclerView.SCROLL_STATE_IDLE){
                    int position = lin.findLastVisibleItemPosition();
                    if(position==list.size()-1){
                        loadData();
                        adapter.notifyDataSetChanged();
                    }
                }
            }
        });
    }

    private void loadData() {
        Retrofit retrofit = new Retrofit.Builder()
                .addConverterFactory(GsonConverterFactory.create())
                .baseUrl("http://app.vmoiver.com")
                .build();

        ApiService apiService = retrofit.create(ApiService.class);
        Call<Bean> call = apiService.getList();
        call.enqueue(new Callback<Bean>() {
            @Override
            public void onResponse(Call<Bean> call, Response<Bean> response) {
                Bean bean = response.body();
                list.addAll(bean.data);
                adapter.notifyDataSetChanged();
                adapter.setOnItemClickLitener(new OnItemClickLitener() {
                    @Override
                    public void onItemClick(View view, int position) {
                        Toast.makeText(MainActivity.this,position+" ",Toast.LENGTH_SHORT).show();
                    }
                });
            }

            @Override
            public void onFailure(Call<Bean> call, Throwable t) {

            }
        });
    }

}

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值