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

来源:互联网 发布:淘宝上警服叫什么 编辑:程序博客网 时间:2024/06/05 02:52
//接口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) {            }        });    }}

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