MVP实现xRecyclerview多条目加载
来源:互联网 发布:linux复制文件命令cp 编辑:程序博客网 时间:2024/05/16 01:54
public interface IRecyModel { void recy(int type, Callback callback);}================================================================public class RecyModel implements IRecyModel { @Override public void recy(int type, Callback callback) { OkHttpUtils.getInstance().doGet("http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.billboard.billList&type="+type+"&size=10&offset=0",callback); }}=================================================================public interface IRecyView { void showrecy(RecyBean rb); int getID(); }==================================================================public class RecyPresenter { IRecyModel model; IRecyView iRecyView; Context context; public RecyPresenter(IRecyView iRecyView, Context context) { this.iRecyView = iRecyView; this.context = context; model=new RecyModel(); } //请求数据的方法 public void Showrecy(){ int type=iRecyView.getID(); model.recy(type, new OnUiCallback() { @Override public void onFailed(Call call, IOException e) { } @Override public void onSuccess(String result) throws IOException { RecyBean rb=new Gson().fromJson(result,RecyBean.class); iRecyView.showrecy(rb); } }); }}============================================================================public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { Context context; RecyBean rb; public MyAdapter(Context context, RecyBean rb) { this.context = context; this.rb = rb; } public static final int TYPE_HEADER = 0; public static final int TYPE_ONE = 1; public static final int TYPE_TWO = 2; List<View> listHeader = new ArrayList<>(); public void addHeader(View view){ listHeader.add(view); } OnItemClickListener listener; public void setOnItemClickListener(OnItemClickListener listener){ this.listener = listener; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if(viewType == TYPE_HEADER){ View view = View.inflate(context, R.layout.recy_header1,null); MyHeaderHolder headerHolder = new MyHeaderHolder(view); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { listener.onItemClick(view, (Integer) view.getTag()); } }); return headerHolder; }else if(viewType == TYPE_ONE){ View view = View.inflate(context, R.layout.recy_item1,null); MyViewHolder holder = new MyViewHolder(view); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { listener.onItemClick(view, (Integer) view.getTag()); } }); return holder; }else{ View view = View.inflate(context, R.layout.recy_item11,null); MyViewHolder1 holder1 = new MyViewHolder1(view); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { listener.onItemClick(view, (Integer) view.getTag()); } }); return holder1; } } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if(holder instanceof MyHeaderHolder){ holder.itemView.setTag(position); ((MyHeaderHolder) holder).header_title.setText(rb.getBillboard().getName()); ((MyHeaderHolder) holder).header_info.setText(rb.getBillboard().getComment()); ImageLoader.getInstance().displayImage(rb.getBillboard().getPic_s192(),((MyHeaderHolder) holder).header_iv); } if(holder instanceof MyViewHolder){ holder.itemView.setTag(position); ((MyViewHolder) holder).author.setText(rb.getSong_list().get(position).getAuthor());// ((MyViewHolder) holder).name.setText(rc.getSong_list().get(position).getArtist_name()); ((MyViewHolder) holder).title.setText(rb.getSong_list().get(position).getAlbum_title()); ImageLoader.getInstance().displayImage(rb.getSong_list().get(position).getPic_big(),((MyViewHolder) holder).iv); } if(holder instanceof MyViewHolder1){ holder.itemView.setTag(position); ((MyViewHolder1) holder).author1.setText(rb.getSong_list().get(position).getAuthor());// ((MyViewHolder1) holder).name1.setText(rc.getSong_list().get(position).getArtist_name()); ((MyViewHolder1) holder).title1.setText(rb.getSong_list().get(position).getAlbum_title()); ImageLoader.getInstance().displayImage(rb.getSong_list().get(position).getPic_big(),((MyViewHolder1) holder).iv1); } } @Override public int getItemViewType(int position) { if(position < listHeader.size()){ return TYPE_HEADER; }else if(position %2 == 0){ return TYPE_ONE; }else{ return TYPE_TWO; } } @Override public int getItemCount() { return rb.getSong_list() == null ? 0 : rb.getSong_list().size(); } class MyViewHolder extends RecyclerView.ViewHolder{ TextView title,name,author; ImageView iv; public MyViewHolder(View itemView) { super(itemView); author = itemView.findViewById(R.id.author); name = itemView.findViewById(R.id.name); title = itemView.findViewById(R.id.title); iv = itemView.findViewById(R.id.iv); } } class MyHeaderHolder extends RecyclerView.ViewHolder{ TextView header_title,header_name,header_info,header_author; ImageView header_iv; public MyHeaderHolder(View itemView) { super(itemView); header_author = itemView.findViewById(R.id.header_author); header_info = itemView.findViewById(R.id.header_info); header_name = itemView.findViewById(R.id.header_name); header_title = itemView.findViewById(R.id.header_title); header_iv = itemView.findViewById(R.id.header_iv); } } class MyViewHolder1 extends RecyclerView.ViewHolder{ TextView title1,name1,author1; ImageView iv1; public MyViewHolder1(View itemView) { super(itemView); author1 = itemView.findViewById(R.id.author1); name1 = itemView.findViewById(R.id.name1); title1 = itemView.findViewById(R.id.title1); iv1 = itemView.findViewById(R.id.iv1); } } public interface OnItemClickListener{ void onItemClick(View view,int position); }}===================================================================public class InfoActivity extends AppCompatActivity implements IRecyView { private XRecyclerView mXrv; private RecyPresenter presenter; int type=21; private String s; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_info); initView(); presenter=new RecyPresenter(this,this); presenter.Showrecy(); //System.out.println(s.equals("any string")); } private void initView() { mXrv = (XRecyclerView) findViewById(R.id.xrv); LinearLayoutManager manager=new LinearLayoutManager(this); mXrv.setLayoutManager(manager); mXrv.setLoadingMoreEnabled(true); } @Override public void showrecy(RecyBean rb) { MyAdapter adapter = new MyAdapter(InfoActivity.this,rb); TextView tv = new TextView(this); adapter.addHeader(tv); mXrv.setAdapter(adapter); adapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() { @Override public void onItemClick(View view, int position) { Toast.makeText(InfoActivity.this,"1112",Toast.LENGTH_SHORT).show(); } }); mXrv.setLoadingListener(new XRecyclerView.LoadingListener() { @Override public void onRefresh() { type++; presenter.Showrecy(); mXrv.refreshComplete(); } @Override public void onLoadMore() { } }); } @Override public int getID() { return type; }}
阅读全文
0 0
- MVP实现xRecyclerview多条目加载
- mvp+retrofit+rxjava xrecyclerview实现多条目 下拉刷新 下拉加载 点击跳转
- Android XRecyclerView(多条目加载实现)
- XRecyclerView 多条目加载
- XRecyclerView多条目加载
- xRecyclerView的刷新,加载更多,多条目
- MVP泛型+xRecyclerView+Retrofit+OkHttp+RxJava多条目,横向
- xrecyclerview实现两种多条目
- XRecyclerView的多条目请求数据,可以实现上拉加载下拉刷新
- XRecyclerView+上拉加载下拉刷新+多条目加载
- xrecyclerview多条目布局
- XRecyclerView的多条目加载(banner+列表)
- RecyclerView 条目点击事件 XRecyclerView刷新加载
- Android——XRecyclerView实现上拉下拉,多条目布局
- 使用MVP,OKHttp封装类及其拦截器,RecyclerView,SpringView,ImageLoader实现数据的多条目加载
- 易学MVP 个络加载数据+XRecyclerView+Retrofit
- Mvp+OkHttp+XRecyclerView------上拉加载下拉刷新
- 项目实战(首页)——MVP+XRecyclerView多布局实现+广告轮循
- Android Studio 3.0前与后,butterknife 工具使用
- DI注入
- C/C++ 第四周线性表(二)--链表 项目二 建设”单链表“算法库
- 人生苦短,我学python
- MUI H5+常见控件的使用之开关
- MVP实现xRecyclerview多条目加载
- 【LeetCode】143. Reorder List
- N皇后问题
- [Oracle 11g r2(11.2.0.4.0)]集群HAIP介绍
- spring_Boot 项目搭建步骤 idea 构建
- 与C++标准委员会专家、侯捷等大师面对面,是怎样一种体验?
- 程序猿看段子,越看越心碎!
- 替换后台过来的iframe标签
- MVP2