Android开发-RecyclerView-AndroidStudio(一)初体验对比ListView

来源:互联网 发布:高中信息技术编程解答 编辑:程序博客网 时间:2024/06/05 14:20

RecyclerView可以简单的理解为ListView的替代品

我们用2张GIF初体验一下他们之间区别:


MainActivity.java:

package com.iwanghang.recyclerviewdemo;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.RecyclerView;import java.util.ArrayList;import java.util.List;import java.util.Locale;/** * RecyclerView 可以简单的理解为ListView */public class MainActivity extends AppCompatActivity {    RecyclerView recycler;    MyAdapter adapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        recycler = (RecyclerView) findViewById(R.id.recycler);        List<String> list = new ArrayList<>();        for (int i = 0; i <100 ; i++) {            list.add(String.format(Locale.CHINA,"第%03d条数据",i));        }        adapter = new MyAdapter(this,list);        recycler.setAdapter(adapter);    }}
MyAdapter.java:

package com.iwanghang.recyclerviewdemo;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import java.util.List;/** * ViewHolder 减少不必要的调用findViewById,不必要每次都重新加载控件布局 */public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder>{    private Context context;    private List<String> list;    public MyAdapter(Context context, List<String> list) {        this.context = context;        this.list = list;    }    @Override    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        View view = LayoutInflater.from(context).inflate(R.layout.item,parent,false);        return new MyViewHolder(view);    }    @Override    public void onBindViewHolder(MyViewHolder holder, int position) {        holder.item_text.setText(list.get(position));    }    @Override    public int getItemCount() {        return list.size();    }    public static class MyViewHolder extends RecyclerView.ViewHolder{        private TextView item_text;        public MyViewHolder(View itemView) {            super(itemView);            item_text = (TextView) itemView.findViewById(R.id.item_text);        }    }    public Context getContext() {        return context;    }    public void setContext(Context context) {        this.context = context;    }    public List<String> getList() {        return list;    }    public void setList(List<String> list) {        this.list = list;    }}
activity_main.xml:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    xmlns:app="http://schemas.android.com/apk/res-auto"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.iwanghang.recyclerviewdemo.MainActivity">    <android.support.v7.widget.RecyclerView        android:id="@+id/recycler"        app:layoutManager="LinearLayoutManager"        android:layout_width="match_parent"        android:layout_height="match_parent"/></RelativeLayout>
item.xml:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="wrap_content">    <TextView        android:id="@+id/item_text"        android:layout_width="match_parent"        android:layout_height="wrap_content" /></LinearLayout>

最后,不要忘记在工程开始时,导包~



1 0