Android RecyclerView网格布局示例解析

2020-12-02 0 319

一个简单的网格布局

activity_main.xml

<?xml version=\"1.0\" encoding=\"utf-8\"?>
<android.support.constraint.ConstraintLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"
  xmlns:app=\"http://schemas.android.com/apk/res-auto\"
  xmlns:tools=\"http://schemas.android.com/tools\"
  android:layout_width=\"match_parent\"
  android:layout_height=\"match_parent\"
  tools:context=\".MainActivity\">

  <android.support.v7.widget.RecyclerView
    android:id=\"@+id/message_notice_list_item\"
    android:layout_width=\"match_parent\"
    android:layout_height=\"match_parent\" />
</android.support.constraint.ConstraintLayout>

message_main_notice_list.xml

<?xml version=\"1.0\" encoding=\"utf-8\"?>
<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"
  android:layout_width=\"wrap_content\"
  android:layout_height=\"150dp\"
  android:gravity=\"center\"
  android:background=\"@color/colorAccent\"
  android:orientation=\"vertical\"
  android:layout_marginTop=\"5dp\"
  >

  <ImageView
    android:id=\"@+id/iv_image\"
    android:layout_width=\"100dp\"
    android:layout_height=\"100dp\"
    android:background=\"@mipmap/logo\"
    android:gravity=\"center\"></ImageView>

  <LinearLayout
    android:layout_width=\"60dp\"
    android:layout_height=\"match_parent\"
    android:orientation=\"vertical\"
    android:paddingLeft=\"5dp\">

    <TextView
      android:id=\"@+id/tv_title\"
      android:layout_width=\"match_parent\"
      android:layout_height=\"30dp\"
      android:gravity=\"center\"
      android:text=\"BIBIA\"></TextView>
  </LinearLayout>
</LinearLayout>

适配器MyRecyclerViewAdapter.java:

package com.example.administrator.recyclerviewtest;

import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.List;

public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder>{
  private List<ItemBean> mList;

  static class ViewHolder extends RecyclerView.ViewHolder{
    View myView;
    ImageView imageView;
    TextView title;
    public ViewHolder(View itemView) {
      super(itemView);
      myView = itemView;
      imageView = (ImageView) itemView.findViewById(R.id.iv_image);
      title = (TextView) itemView.findViewById(R.id.tv_title);
    }
  }

  public MyRecyclerViewAdapter(List<ItemBean> list){
    this.mList = list;
  }

  @Override
  public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.message_main_notice_list,null);
    final ViewHolder holder = new ViewHolder(view);
    return holder;
  }

  //将数据绑定到控件上
  @Override
  public void onBindViewHolder(ViewHolder holder, int position) {
    ItemBean bean = mList.get(position);
    holder.imageView.setBackgroundResource(bean.itemImage);
    holder.title.setText(bean.itemTitle);
  }

  @Override
  public int getItemCount() {
    return mList.size();
  }


  //下面两个方法提供给页面刷新和加载时调用
  public void add(List<ItemBean> addMessageList) {
    //增加数据
    int position = mList.size();
    mList.addAll(position, addMessageList);
    notifyItemInserted(position);
  }

  public void refresh(List<ItemBean> newList) {
    //刷新数据
    mList.removeAll(mList);
    mList.addAll(newList);
    notifyDataSetChanged();
  }
}

主方法:

package com.example.administrator.recyclerviewtest;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class MainActivity extends AppCompatActivity {

  private RecyclerView recyclerView;

  private List<ItemBean> list;

  private MyRecyclerViewAdapter myAdapte1r;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    list = new ArrayList<ItemBean>();
    for ( int i=0; i< 19;i++){
      list.add(new ItemBean(
          R.mipmap.logo,
          \"Hello\",
          new Date().toString()+\"\"
      ));
    }
    myAdapte1r = new MyRecyclerViewAdapter(list);

    recyclerView = (RecyclerView) findViewById(R.id.message_notice_list_item);

    //纵向线性布局
    //LinearLayoutManager layoutManager = new LinearLayoutManager(this);

    //纵向线性布局
    GridLayoutManager layoutManager = new GridLayoutManager(this,2);

    recyclerView.setLayoutManager(layoutManager);
    recyclerView.setAdapter(myAdapte1r);
  }
}

效果:

Android RecyclerView网格布局示例解析

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

遇见资源网 Android Android RecyclerView网格布局示例解析 http://www.ox520.com/23846.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务