RecyclerView的使用

来源:互联网 发布:星际淘宝网下载 编辑:程序博客网 时间:2024/05/01 12:12

RecyclerView是一种新的视图组,目标是为任何基于适配器的视图提供相似的渲染方式。它被作为ListView和GridView控件的继承者,在最新的support-V7版本中提供支持。在开发RecyclerView时充分考虑了扩展性,因此用它可以创建想到的任何种类的的布局。

代码下载地址:http://download.csdn.net/detail/u011324501/9417426

android新组件 RecyclerView的使用。

主界面布局:main.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <android.support.v7.widget.RecyclerView        android:id="@+id/recyclerview"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:scrollbars="vertical" /></RelativeLayout>

adapter.xml布局:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:orientation="vertical"    android:id="@+id/relativelayoutsend"    android:layout_height="match_parent">    <TextView        android:id="@+id/textview"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="RecyclerView"/>    <RatingBar        android:id="@+id/ratingbar"        android:layout_width="wrap_content"        style="?android:attr/ratingBarStyleSmall"        android:layout_height="wrap_content" /></LinearLayout>
MainActivity.java文件代码:

package com.example.ningshengcai.recyclerview;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import java.util.ArrayList;public class MainActivity extends AppCompatActivity {    public static MainActivity mactivity;    private RecyclerView recyclerView;    String da = "111";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        mactivity = this;        recyclerView = (RecyclerView)findViewById(R.id.recyclerview);        adddata();    }    public void adddata() {        recyclerView.setHasFixedSize(true);        //创建一个线性布局管理器        LinearLayoutManager layoutManager = new LinearLayoutManager(this);        //设置布局管理器        recyclerView.setLayoutManager(layoutManager);        //创建数据集        ArrayList<String> mydataset = new ArrayList<String>();        for (int i = 0; i <= 10; i++) {            mydataset.add(da);        }        //创建adapter ,并制定数据集        RecyclerViewAdapter adapter = new RecyclerViewAdapter(mydataset);        //设置adapter        recyclerView.setAdapter(adapter);    }}
RecyclerViewAdapter.java代码:

package com.example.ningshengcai.recyclerview;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.LinearLayout;import android.widget.RatingBar;import android.widget.TextView;import android.widget.Toast;import java.util.ArrayList;/** * recyclerView adapter * @author ning */public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {    private ArrayList<String> mDataset;    public class ViewHolder extends RecyclerView.ViewHolder {        public TextView textview;        public RatingBar ratingbar;        public LinearLayout relativelayoutsend;        public ViewHolder(View v) {            super(v);            textview = (TextView) v.findViewById(R.id.textview);            ratingbar = (RatingBar)v.findViewById(R.id.ratingbar);            relativelayoutsend = (LinearLayout)v.findViewById(R.id.relativelayoutsend);        }    }    public void add(int position, String item) {        mDataset.add(position, item);        notifyItemInserted(position);    }    public void remove(String item) {        int position = mDataset.indexOf(item);        mDataset.remove(position);        notifyItemRemoved(position);    }    // Provide a suitable constructor (depends on the kind of dataset)    public RecyclerViewAdapter(ArrayList<String> myDataset) {        mDataset = myDataset;    }    // Create new views (invoked by the layout manager)    @Override    public RecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,                                                               int viewType) {        // create a new view        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter, parent, false);        // set the view's size, margins, paddings and layout parameters        ViewHolder vh = new ViewHolder(v);        return vh;    }    // Replace the contents of a view (invoked by the layout manager)    @Override    public void onBindViewHolder(final ViewHolder holder, int position) {        // - get element from your dataset at this position        // - replace the contents of the view with that element        holder.ratingbar.setNumStars(5);//设置显示5颗星        final String name = mDataset.get(position);//获取adapter数据        holder.textview.setText(name);//text显示接收数据        if (name!=null) {            holder.textview.setOnClickListener(new OnClickListener() {                @Override                public void onClick(View v) {                    remove(name);//点击textview移除                    // Toast.makeText(MainActivity.mactivity, name, Toast.LENGTH_SHORT).show();                }            });            holder.relativelayoutsend.setOnClickListener(new OnClickListener() {                @Override                public void onClick(View v) {                    //   remove(name);                     Toast.makeText(MainActivity.mactivity,name , Toast.LENGTH_SHORT).show();                }            });            //   holder.data.setText("Footer: " + mDataset.get(position));        }    }    // Return the size of your dataset (invoked by the layout manager)    @Override    public int getItemCount() {        return mDataset.size();    }} 
在build.gradle文件中添加

compile 'com.android.support:recyclerview-v7:22.+'









0 0