Android開發學習--RecycleView入門

來源:互聯網
上載者:User

標籤:dap   scaletype   綁定   開發   height   save   contex   context   wrap   

該控制項用於在有限的視窗中展示大量資料集,其實這樣功能的控制項我們並不陌生,例如:ListView、GridView

通過設定它提供的不同LayoutManager,ItemDecoration , ItemAnimator實現令人瞠目的效果。

  • 你想要控制其顯示的方式,請通過布局管理器LayoutManager
  • 你想要控制Item間的間隔(可繪製),請通過ItemDecoration
  • 你想要控制Item增刪的動畫,請通過ItemAnimator
  • 你想要控制點擊、長按事件,請自己寫

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:layout_width="match_parent"    android:layout_height="match_parent"    >    <android.support.v7.widget.RecyclerView        android:id="@+id/id_recyclerview_horizontal"        android:layout_width="match_parent"        android:layout_height="120dp"        android:layout_centerVertical="true"        android:scrollbars="none"         /></RelativeLayout>

item.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="120dp"    android:layout_height="120dp">    <ImageView        android:id="@+id/iv"        android:layout_width="80dp"        android:layout_height="80dp"        android:layout_alignParentTop="true"        android:layout_centerHorizontal="true"        android:layout_margin="5dp"        android:scaleType="centerCrop"/>    <TextView        android:id="@+id/tv"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@id/iv"        android:layout_centerHorizontal="true"        android:layout_marginTop="5dp"        android:layout_marginBottom="5dp"        android:text="some info"        android:textSize="12dp"        /></RelativeLayout>

MainActivity.java

public class MainActivity extends AppCompatActivity {    private RecyclerView mRV;    private List<Integer> mDatas;    private GalleryAdapter madapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initData();        mRV = (RecyclerView) findViewById(R.id.id_recyclerview_horizontal);        LinearLayoutManager li = new LinearLayoutManager(this);        li.setOrientation(LinearLayoutManager.HORIZONTAL);        mRV.setLayoutManager(li);//設定布局管理器        madapter = new GalleryAdapter(this,mDatas);        mRV.setAdapter(madapter);//設定adapter    }    private void initData(){        mDatas = new ArrayList<Integer>(Arrays.asList(R.drawable.a,                R.drawable.b, R.drawable.c, R.drawable.e,                R.drawable.f, R.drawable.g));    }}
GalleryAdapter.java
public class GalleryAdapter extends RecyclerView.Adapter<GalleryAdapter.ViewHolder> {    private LayoutInflater mInflter;    private List<Integer> mdatas;    public GalleryAdapter(Context context, List<Integer> datas){        mInflter = LayoutInflater.from(context);        mdatas = datas;    }    /**     * 我們建立的ViewHolder必須繼承RecyclerView.ViewHolder,這個RecyclerView.ViewHolder的     * 構造時必須傳入一個View,這個View相當於我們ListView getView中的convertView     * (即:我們需要inflate的item布局需要傳入)。     */    public class ViewHolder extends RecyclerView.ViewHolder{        public ViewHolder(View v){            super(v);        }        ImageView miv;        TextView mtv;    }    //建立ViewHoler    @Override    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        View view = mInflter.inflate(R.layout.item,parent,false);        ViewHolder viewHolder = new ViewHolder(view);        viewHolder.miv = (ImageView) view.findViewById(R.id.iv);        return viewHolder;    }    //設定值;將資料繫結至viewholder    @Override    public void onBindViewHolder(ViewHolder holder, int position) {        holder.miv.setImageResource(mdatas.get(position));    }    //有多少條資料    @Override    public int getItemCount() {        return mdatas.size();    }}

 

Android開發學習--RecycleView入門

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.