【安卓筆記】CardView+RecyclerView使用示例
CardView+RecycleView可以非常方便的實現一個卡片式列表佈局,之前編寫卡片式佈局非常麻煩(地址:http://blog.csdn.net/chdjj/article/details/41546477),還得編寫各種資原始檔。
下面是一個簡單示例。
截圖:
有點難看?自己調一下就ok啦。。這裡只是一個示例。
步驟:
1.新增依賴:
compile 'com.android.support:cardview-v7:21.0.0'
compile 'com.android.support:recyclerview-v7:21.0.0'
2.頁面佈局:<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=".MainActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/main_recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
></android.support.v7.widget.RecyclerView>
</RelativeLayout>
3.item佈局:<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:background="#ff3cffdd"
xmlns:tools="http://schemas.android.com/tools"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_height="match_parent">
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="130dp"
card_view:cardCornerRadius="4dp"
card_view:cardBackgroundColor="#fff"
card_view:cardElevation="2dp"
android:layout_marginTop="2dp"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:src="@mipmap/ic_launcher"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/info_text"
android:gravity="center"
android:textColor="#000"
android:textSize="19sp"
android:layout_gravity="center"
tools:text="@string/hello_world"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
這裡如果你想加CardView的自定義屬性,必須新增其名稱空間:xmlns:card_view="http://schemas.android.com/apk/res-auto"
4.介面卡:package com.taobao.recyclerviewwithcardview.ui.adapter;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.taobao.recyclerviewwithcardview.R;
import java.util.List;
/**
* Created by Rowandjj on 2015/3/25.
*/
public class MainAdapter extends RecyclerView.Adapter<MainAdapter.ViewHolder>
{
private List<String> mDataSet = null;
private OnItemClickListener mListener;
public MainAdapter(List<String> dataSet)
{
this.mDataSet = dataSet;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i)
{
final View itemView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_main,viewGroup,false);
itemView.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
if(mListener != null)
mListener.onItemClick(v, (String) itemView.getTag());
}
});
return new ViewHolder(itemView);
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i)
{
String data = mDataSet.get(i);
viewHolder.bindData(data);
viewHolder.itemView.setTag(data);
}
@Override
public int getItemCount()
{
return mDataSet.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder
{
private TextView tv;
public ViewHolder(View itemView)
{
super(itemView);
tv = (TextView) itemView.findViewById(R.id.info_text);
}
public void bindData(String s)
{
if(s != null)
tv.setText(s);
}
}
public interface OnItemClickListener
{
public void onItemClick(View view,String data);
}
public void setOnItemClickListener(OnItemClickListener listener)
{
this.mListener = listener;
}
}
5.資料來源:
package com.taobao.recyclerviewwithcardview.data;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Rowandjj on 2015/3/24.
*/
public class DataSource
{
public static final List<String> generateData(int size)
{
if (size <= 0)
return null;
List<String> datas = new ArrayList<>();
for (int i = 0; i < size; i++)
{
datas.add("這是列表資料"+i);
}
return datas;
}
}
6.主頁面程式碼:package com.taobao.recyclerviewwithcardview.ui.activity;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Toast;
import com.taobao.recyclerviewwithcardview.R;
import com.taobao.recyclerviewwithcardview.data.DataSource;
import com.taobao.recyclerviewwithcardview.ui.adapter.MainAdapter;
public class MainActivity extends ActionBarActivity
{
private RecyclerView mRecyclerView;
private MainAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRecyclerView = (RecyclerView) findViewById(R.id.main_recyclerview);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mAdapter = new MainAdapter(DataSource.generateData(20));
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setAdapter(mAdapter);
mAdapter.setOnItemClickListener(new MainAdapter.OnItemClickListener()
{
@Override
public void onItemClick(View view, String data)
{
Toast.makeText(MainActivity.this,"data:"+data,Toast.LENGTH_SHORT).show();
}
});
}
}
程式碼地址:https://github.com/Rowandjj/RecyclerViewWithCardView
相關文章
- 【安卓筆記】RecyclerView+SwipeRefreshLayout示例安卓筆記View
- 【安卓筆記】使用DialogFragment託管dialog安卓筆記Fragment
- 【安卓筆記】Widget安卓筆記
- 安卓Glide(4.7.1)使用筆記 01 - 引入專案安卓IDE筆記
- 【安卓筆記】ormlite入門安卓筆記ORM
- 【安卓筆記】gradle入門安卓筆記Gradle
- 這是一個筆記示例筆記
- 【安卓筆記】下拉重新整理元件的使用及實現安卓筆記元件
- Python筆記之paramiko模組安裝和使用示例Python筆記
- 安卓開發筆記——數獨遊戲安卓筆記遊戲
- 安卓學習筆記之Activity(一)安卓筆記
- 【安卓筆記】崩潰日誌收集安卓筆記
- 安卓學習筆記20:Fragment入門安卓筆記Fragment
- 安卓初學基礎學習筆記安卓筆記
- pytorch程式碼示例筆記 -- AutogradPyTorch筆記
- 【讀書筆記】安卓學習筆記第一篇——個人雜談筆記安卓
- 安卓應用安全指南4.1.1建立/使用活動示例程式碼安卓
- 安卓學習筆記---開篇(目錄結構)安卓筆記
- 【安卓筆記】硬碟快取工具類的編寫安卓筆記硬碟快取
- Google官方MVP示例程式碼閱讀筆記GoMVP筆記
- 安卓學習筆記31:使用自定義檢視繪製文字、圖形與影像安卓筆記
- 5個最佳安卓測試框架(帶示例)安卓框架
- Markdown使用筆記筆記
- docker使用筆記Docker筆記
- wcdb使用筆記筆記
- postgreSql 使用筆記SQL筆記
- vue - 使用筆記Vue筆記
- 社群使用筆記筆記
- vim使用筆記筆記
- Tmux 使用筆記UX筆記
- MarkDown 使用筆記筆記
- webpack使用筆記Web筆記
- NSDate使用筆記筆記
- maven使用筆記Maven筆記
- node 使用筆記筆記
- Perforce 使用筆記筆記
- sublime使用筆記筆記
- 《mockito 使用筆記》Mockito筆記