Android中的RecyclerView

来源:互联网 发布:转发淘宝链接赚钱 编辑:程序博客网 时间:2024/06/06 07:14

效果图:


item_view.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="60dp"    android:textSize="18sp"    android:gravity="center"    android:background="@color/colorPrimary"    android:layout_margin="1dp"    ></TextView>
Adapter

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {    private List<String> mData;    private OnItemClickListener mOnItemClickListener;    public MyAdapter(List<String> mData) {        this.mData = mData;    }    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {        mOnItemClickListener = onItemClickListener;    }    public interface OnItemClickListener {        public void onItemClick();    }    @Override    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_view, parent, false);        return new ViewHolder(view);    }    @Override    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {        ((ViewHolder)holder).textView.setText(mData.get(position) + " " + position);    }    @Override    public int getItemCount() {        return mData.size();    }    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{        public TextView textView;        public ViewHolder(View itemView) {            super(itemView);            textView = (TextView) itemView;            textView.setOnClickListener(this);        }        @Override        public void onClick(View view) {            mOnItemClickListener.onItemClick();        }    }}
Activity

public class MainActivity extends Activity implements View.OnClickListener{    private RecyclerView mRecyclerView;    private MyAdapter mAdapter;    private ArrayList<String> mData;    private Spinner mSpinner;    private View mButtonAdd,mButtonDel;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mData = new ArrayList<>();        mData.add("hello");        mData.add("world");        mData.add("sleeping");        mRecyclerView = findViewById(R.id.recycler_view);        mSpinner = findViewById(R.id.spinner);        mButtonAdd = findViewById(R.id.add_button);        mButtonDel = findViewById(R.id.delete_button);        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));        mAdapter = new MyAdapter(mData);        mAdapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {            @Override            public void onItemClick() {                Toast.makeText(MainActivity.this, "test --------", Toast.LENGTH_SHORT).show();            }        });        mRecyclerView.setHasFixedSize(true);        mRecyclerView.setAdapter(mAdapter);        mButtonAdd.setOnClickListener(this);        mButtonDel.setOnClickListener(this);        List<String> list = new ArrayList<>();        list.add("LinearLayoutManager");        list.add("GridLayoutManager");        mSpinner.setAdapter(new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_spinner_item, list));        mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {            @Override            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {                if (i == 0) {                    mRecyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));                } else if (i == 1) {                    mRecyclerView.setLayoutManager(new GridLayoutManager(MainActivity.this, 3));                } else {                }            }            @Override            public void onNothingSelected(AdapterView<?> adapterView) {            }        });    }    @Override    public void onClick(View view) {        switch (view.getId()) {            case R.id.add_button:                mData.add("plus: ");                if (mData.size() > 0) {                    mAdapter.notifyDataSetChanged();                }                break;            case R.id.delete_button:                if (mData.size() > 0) {                    mData.remove(mData.size() - 1);                    mAdapter.notifyDataSetChanged();                }                break;            default:                break;        }    }}
layout:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.weilei.themedemo.MainActivity">    <android.support.v7.widget.RecyclerView        android:id="@+id/recycler_view"        android:layout_width="match_parent"        android:layout_height="wrap_content"        >    </android.support.v7.widget.RecyclerView>    <LinearLayout        android:id="@+id/bottom_layout"        android:layout_height="wrap_content"        android:layout_width="match_parent"        android:orientation="horizontal"        android:layout_alignParentBottom="true">        <Spinner            android:id="@+id/spinner"            android:layout_height="wrap_content"            android:layout_width="0dp"            android:layout_weight="1"            >        </Spinner>        <Button            android:id="@+id/add_button"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="ADD"            />        <Button            android:id="@+id/delete_button"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="DEL"            />    </LinearLayout></RelativeLayout>
原创粉丝点击