当前位置: 移动技术网 > IT编程>移动开发>Android > Android RecyclerView实现数据列表展示效果

Android RecyclerView实现数据列表展示效果

2019年07月24日  | 移动技术网IT编程  | 我要评论

e12,高岗 女人,松原旅游景点大全

本文实例为大家分享了android九宫格图片展示的具体代码,供大家参考,具体内容如下

1.首先导入依赖: 

compile 'com.android.support:recyclerview-v7:25.3.1'

2.适配器类: 

public class newsadapter extends recyclerview.adapter {
 private view view;
 private context mcontext;
 private arraylist<newsdata.databean> mlist=new arraylist<>();

 public newsadapter(context mcontext) {
  this.mcontext = mcontext;
 }

 //找到需要导入的布局
 @override
 public recyclerview.viewholder oncreateviewholder(viewgroup parent, int viewtype) {
  view = layoutinflater.from(mcontext).inflate(r.layout.news_item, null);
  return new viewholder(view);

 }
 //加载相应的内容
 @override
 public void onbindviewholder(recyclerview.viewholder holder, int position) {
  viewholder viewholder=(viewholder)holder;
  viewholder.textview.settext(""+getitem(position).getnews_title());
  glide.with(mcontext).load(getitem(position).getpic_url()).into(viewholder.ima);
 }

 //手写的重置数据的方法
 public void setdata(arraylist<newsdata.databean> list){
  if (list!=null&&list.size()>0){
   mlist.addall(list);
  }

 }
 //手写的获得视图的方法
 public newsdata.databean getitem(int position){
  return mlist.get(position);

 };

 @override
 public int getitemcount() {
  return mlist.size();
 }


 //定义的viewholder类继承recyclerview.viewholder 并找到布局中的id
 public class viewholder extends recyclerview.viewholder{
  private textview textview;
  private imageview ima;
  public viewholder(view itemview) {
   super(itemview);
   textview=(textview)itemview.findviewbyid(r.id.tv);
   ima=(imageview)itemview.findviewbyid(r.id.image);
  }
 }
}

 3.主界面(用到recyclerview的主要是initdata()方法和handler): 

public class mainactivity extends appcompatactivity implements imainview{
 private mainpresenter mainp;
 private newsadapter md;
 private recyclerview recy;
 private arraylist<newsdata.databean> mlist=new arraylist<>();
 private string url="http://api.expoon.com/appnews/getnewslist/type/1/p/1";
 private handler hand=new handler(){
  @override
  public void handlemessage(message msg) {
   super.handlemessage(msg);
   gson gson=new gson();
   if (msg.what==1) {
    newsdata newsdata = gson.fromjson(msg.obj.tostring(), newsdata.class);
    mlist=(arraylist<newsdata.databean>) newsdata.getdata();

    md.setdata((arraylist<newsdata.databean>) mlist);
    md.notifydatasetchanged();
   }
  }
 };
 @override
 protected void oncreate(bundle savedinstancestate) {
  super.oncreate(savedinstancestate);
  setcontentview(r.layout.activity_main);
  initview();
  initdata();
  initdatafromserver();
 }

 private void initview() {
  recy=(recyclerview)findviewbyid(r.id.recy);
 }

 private void initdatafromserver() {
  //加载网络数据,找p层去要
  mainp.loaddatafromserver(url);

 }

 private void initdata() {
  mainp=new mainpresenter(this);
  //设置适配器
  md=new newsadapter(this);
  //创建默认的线性layoutmanager
  recy.setlayoutmanager(new linearlayoutmanager(this));
  recy.setadapter(md);
 }

 //重写的imainview类接口的两个方法
 @override
 public void successfulcallback(string str) {
  message msg = message.obtain();
  msg.what=1;
  msg.obj=str;
  hand.sendmessage(msg);
 }

 @override
 public void errcallback(int code, string msg) {

 }
}

效果图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网