Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android -- RecyclerView的使用

Android -- RecyclerView的使用

編輯:關於Android編程

說明:

RecyclerViewsupport-v7包中的新組件,你可以使用該組件替代ListViewCridView,從命名可以看出RecyclerView會自動回收Item,它並不關心Item的樣式,Item的數據。

那麼要使用RecyclerView要做哪些准備工作呢?

1、既然RecyclerView是support-v7包中的組件,那麼我們的SDK上肯定要下載有support-v7這個包,我們打開sdkextrasandroidsupport 7目錄可以發現有一個recyclerview這個文件夾,
這裡寫圖片描述
沒錯這就是我們今天要使用的RecyclerView。

2、我們在build.gradle文件中添加:

dependencies {
    compile fileTree(dir: 'libs', include:['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.1'
    compile 'com.android.support:recyclerview-v7:22.2.1'
}

PS:Eclipse用戶可以導入RecyclerView這個project,然後將自己的project依賴於RecyclerView這個project

到這裡我們的准備工作就做完了,接下來就開始編代碼了。

在布局文件中添加:


對,沒錯這樣我們就往布局中添加了一個RecyclerView控件

Activity代碼:

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MainActivity extends AppCompatActivity {

    private RecyclerView mRecyclerView;

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

        mRecyclerView = (RecyclerView)findViewById(R.id.recyclerView);

        //線性布局管理器
        LinearLayoutManager llmh = new LinearLayoutManager(this);
        //設置為橫向
        llmh.setOrientation(LinearLayoutManager.HORIZONTAL);

        //線性布局管理器
        LinearLayoutManager llmv = new LinearLayoutManager(this);
        //設置為縱向
        llmv.setOrientation(LinearLayoutManager.VERTICAL);

        // 網格布局管理器,第二參數為指定幾列
        GridLayoutManager glm = new GridLayoutManager(this, 3);

        //流式布局管理器,第一個參數為設置為幾列,第二個參數為排列方式
        StaggeredGridLayoutManager sglm =
                new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL);

        //設置RecyclerView的布局管理器
        mRecyclerView.setLayoutManager(sglm);

        //設置數據源
        List> data = new ArrayList>();
        int loop = 10;
        while (loop>0){
            Map map = new HashMap();
            map.put(text,I'm data +loop+ ! );
            data.add(map);
            loop--;
        }

        RecycleAdapter adapter = new RecycleAdapter(data,this);


        //添加適配器
        mRecyclerView.setAdapter(adapter);



    }

}

RecycleAdapter代碼:

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;
import java.util.Map;

public class RecycleAdapter extends RecyclerView.Adapter{

    private List> mData;

    public RecycleAdapter(List> data){
        this.mData = data;
    }

    class ViewHolder extends RecyclerView.ViewHolder{
        private TextView tv;
        public ViewHolder(View v){
            super(v);
            this.tv = (TextView)v.findViewById(R.id.tv);
        }
    }

    @Override
    public int getItemCount() {
        return mData.size();
    }

    //填充數據
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.tv.setText(mData.get(position).get(text)+);
        holder.tv.setTag(mData.get(position).get(text)+);
        //設置監聽事件
        holder.tv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(mContext,view.getTag()+,Toast.LENGTH_SHORT).show();
            }
        });
    }

    //創建ViewHolder
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int position) {
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        View v = inflater.inflate(R.layout.item_layout, parent, false);
        ViewHolder vh = new ViewHolder(v);
        return vh;
    }


}

item_layout.xml:



    

到此為止,代碼編寫完畢,以下是效果圖:

這裡寫圖片描述

 

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