Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 安卓學習-- RecyclerView簡單入門,安卓recyclerview

安卓學習-- RecyclerView簡單入門,安卓recyclerview

編輯:關於android開發

安卓學習-- RecyclerView簡單入門,安卓recyclerview


一、加入JAR包

第一感覺這個東東,好復雜,沒ListView來的快,方便

在項目中加入android-support-v7-recyclerview.jar包

這個包在extras\android\support\v7\recyclerview\libs這個目錄下。
在studio中加入依賴

//添加依賴包
compile 'com.android.support:recyclerview-v7:+

二、在布局文件中加入RecyclerView。

<?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: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.liunan.recyclerviewstudy.MainActivity">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/main_recylist"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</RelativeLayout>

三在Activtiy中初始化

package com.liunan.recyclerviewstudy;

import android.app.Activity;
import android.graphics.drawable.GradientDrawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.OrientationHelper;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends Activity {

    private RecyclerView mRecyclerView;

    private List<String> mDataList ;

    private MyAdapter myAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        initData();

    }

    /**
     * 初始化
     */
    private void initView() {
        //找到這個Listview
        mRecyclerView = (RecyclerView) findViewById(R.id.main_recylist);
        //設置線性管理器
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));


    }


    /**
     * 初始化數據
     */
    private void initData() {

        mDataList = new ArrayList<String>();
        for (int i=0;i<50;i++){
            mDataList.add("內容 - "+i);
        }
        /*
        設置適配器
         */
        myAdapter = new MyAdapter(mDataList);
        mRecyclerView.setAdapter(myAdapter);
    }





}

 

三設置Adapter與Item

這個Adapter要繼承RecyclerView.Adapter

package com.liunan.recyclerviewstudy;


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;

/**
 * RecyclerView適配器
 */
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {

    private List<String> mDataList;

    public MyAdapter(List<String> list) {
        mDataList = list;
    }

    @Override
    public int getItemCount() {
        // 返回數據集合大小
        return mDataList == null ? 0 : mDataList.size();
    }


     @Override
     public void onBindViewHolder(ViewHolder holder, int position) {

        //獲取這個TextView

        TextView tv= holder.mTvTitle;

        tv.setText(mDataList.get(position));
    }


    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.main_listview, parent, false));
    }


    public class ViewHolder extends RecyclerView.ViewHolder {

        private TextView mTvTitle;

        public ViewHolder(View itemView) {
            super(itemView);
            mTvTitle = (TextView) itemView.findViewById(R.id.item_tv);

        }


    }


}

item

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

    <TextView
        android:clickable="true"
        android:textSize="18sp"
        android:id="@+id/item_tv"
        android:layout_width="200dp"
        android:layout_height="50dp"
        android:background="#ff0"
        android:text="測試"/>

</LinearLayout>

運行效果

 

四更改為GridView

在Activity中將

//設置線性管理器
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

 

更改為

//設置表格管理器
        mRecyclerView.setLayoutManager(new GridLayoutManager(this,2));

效果

 

五使用瀑布式的方式

同樣更改上面的地方

//設置瀑布式,交錯
       mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, OrientationHelper.VERTICAL));

更改adapter中onBindViewHolder方法

     @Override
     public void onBindViewHolder(ViewHolder holder, int position) {

        //獲取這個TextView

        TextView tv= holder.mTvTitle;

       // 獲取布局參數

        LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) tv.getLayoutParams();

        //根據數據的位置設置不同的高度與背景色
        if(position%2==0){
            //設置背景色
            tv.setBackgroundColor(Color.parseColor("#3300ff00"));
            //設置高度
            lp.height=100;
        }else{
            tv.setBackgroundColor(Color.parseColor("#3300ffff"));
            lp.height=50;
        }
        tv.setLayoutParams(lp);
        tv.setText(mDataList.get(position));
    }

效果

 

默認的分割線沒有實現要自己實現RecyclerView.ItemDecoration

 



 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved