Android recycleview使用详解,recycleview实现九宫格布局即横向排列

1、添加recycleview依赖

compile('com.android.support:recyclerview-v7:25.1.1') {
    force = true
}

2、item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:melove="http://schemas.android.com/apk/res-auto"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <RelativeLayout
        android:id="@+id/item_company_member_layout"
        android:layout_width="80dp"
        android:layout_height="90dp"
        >

        <ImageView
            android:id="@+id/item_information_choose_image"
            android:layout_width="15dp"
            android:layout_height="15dp"
            android:layout_alignParentRight="true"
            android:layout_marginRight="12dp"
            android:src="@drawable/ic_launcher_background"
            android:visibility="invisible"/>

        <ImageView
            android:id="@+id/item_company_member_head_image"
            android:layout_width="44dp"
            android:layout_height="44dp"
            android:layout_below="@+id/item_information_choose_image"
            android:layout_centerHorizontal="true"
            android:scaleType="centerCrop"
            android:src="@drawable/ic_launcher_background"
            />

            <TextView
                android:id="@+id/item_company_member_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="8dp"
                android:layout_below="@+id/item_company_member_head_image"
                android:layout_centerHorizontal="true"
                android:text="林晓"
                android:textSize="12sp"/>
    </RelativeLayout>

</LinearLayout>

3、entity.class

/**
 * 作者:created by meixi
 * 邮箱:[email protected]
 * 日期:2018/8/30 10
 */
public class TestEntity {

    private String title;
    private String https;
    private boolean ifshow;

    public boolean isIfshow() {
        return ifshow;
    }

    public void setIfshow(boolean ifshow) {
        this.ifshow = ifshow;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getHttps() {
        return https;
    }

    public void setHttps(String https) {
        this.https = https;
    }
}

4、adapter.class

public class NewgroupsAdapter extends RecyclerView.Adapter<NewgroupsAdapter.ViewHolder> {
    private List<TestEntity> entityList;
    private Context context;
    private OnItemClickListener mOnItemClickListener;
    private OnItemClickListenerupd mOnItemClickListenerupd;
    private Boolean is_edit = false;

    public NewgroupsAdapter(Context context, List<TestEntity> list) {
        this.context = context;
        this.entityList = list;
    }

    public void setEdit() {//activity刷新adapter方法
        is_edit = !is_edit;
        notifyDataSetChanged();
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.item_add_groups_number, null);


        ViewHolder holder = new ViewHolder(view);
        holder.imageView = (ImageView)view.findViewById(R.id.item_information_choose_image);
        holder.textView = (TextView) view.findViewById(R.id.item_company_member_name);
        return holder;
    }

    @Override
    public void onBindViewHolder(final ViewHolder holder, final int position) {
        final TestEntity entity = entityList.get(position);


        if (is_edit) {
            holder.imageView.setVisibility(View.VISIBLE);
        } else {
            holder.imageView.setVisibility(View.GONE);

        }

        holder.textView.setText(entity.getTitle());//标题

        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mOnItemClickListenerupd.onItemClick(position);
            }
        });

        holder.textView.setOnClickListener(new View.OnClickListener() {//点击删除
            @Override
            public void onClick(View view) {
                if (is_edit) {
                }else {
                    mOnItemClickListener.onItemClick(holder.itemView, position); // 2
                }
            }
        });
    }
    @Override
    public int getItemCount() {
        return entityList.size();
    }
    
    public class ViewHolder extends RecyclerView.ViewHolder {

        public ImageView imageView;
        public TextView textView;
        public ViewHolder(View view) {
            super(view);
        }
    }

    public interface OnItemClickListener {
        void onItemClick(View view, int position);
    }

    public void setOnItemminiClickListener(OnItemClickListener mOnItemClickListener) {//元素点击
        this.mOnItemClickListener = mOnItemClickListener;
    }
    public  interface OnItemClickListenerupd {
        void onItemClick( int position);
    }
    public void setOnItemClickListener(OnItemClickListenerupd mOnItemClickListener) {//item点击
        this.mOnItemClickListenerupd = mOnItemClickListener;
    }

}

5、activity调用详解

private List<TestEntity> testEntities = new ArrayList<>();
private RecyclerView recyclerView;
private NewgroupsAdapter newgroupsAdapter;
  private void initRecyclerView() {
      recyclerView = (RecyclerView)findViewById(R.id.myrecyclerview);
        newgroupsAdapter = new NewgroupsAdapter(MainActivity.this, testEntities);
      newgroupsAdapter.setOnItemminiClickListener(new NewgroupsAdapter.OnItemClickListener() {
            @Override
            public void onItemClick( View view,int posi) {

                Toast.makeText(MainActivity.this,posi+"",Toast.LENGTH_LONG).show();
            }
        });
      newgroupsAdapter.setOnItemClickListener(new NewgroupsAdapter.OnItemClickListenerupd() {
            @Override
            public void onItemClick(int position) {
                Toast.makeText(MainActivity.this,position+"max",Toast.LENGTH_LONG).show();
            }
        });
//        recyclerView.setLayoutManager(new GridLayoutManager(getApplicationContext(), 5));//横向布局,九宫格
        recyclerView.setLayoutManager(new LinearLayoutManager(this));//竖向布局,默认
      recyclerView.setAdapter(newgroupsAdapter);
    }

给recycleview 赋值

for (int i=0;i<29;i++){
    TestEntity testEntity = new TestEntity();
    testEntity.setHttps("baidu.com");
    testEntity.setTitle("百度。com");
    testEntities.add(testEntity);
    if (i==28){
        newgroupsAdapter.notifyDataSetChanged();

    }
}

猜你喜欢

转载自blog.csdn.net/meixi_android/article/details/82223853