類說明
CAListView和CAScrollView非常相似,只是其內(nèi)部成列表狀,支持水平方案和豎直方向的滑動(dòng)。常用于一些列表信息的展示,如:通訊錄、新聞列表、目錄索引等。
CAListView使用起來相對比較復(fù)雜,一般我們要同時(shí)使用CAListView、CAListViewCell、CAListViewDelegate、CAListViewDataSource來同時(shí)構(gòu)建我們的列表界面,這么我們先分別了解一下它們的作用:
CAListView就是列表控件,是顯示列表的載體,它是由多個(gè)CAListViewCell列組成的。
CAListViewCell是組成列表的每一個(gè)單元,下面我們都簡稱為cell
CAListViewDelegate是CAListView的交互代理,主要代理選擇cell和取消選擇cell的事件
CAListViewDataSource是CAListView的數(shù)據(jù)代理,主要代理cell的數(shù)量、cell的高度和將cell添加到CAListView顯示。
CAListView 屬性(點(diǎn)擊查看方法介紹)
屬性 | 說明 |
ListViewOrientation | listView的滾動(dòng)方向 |
ListViewDataSource | 添加數(shù)據(jù)代理 |
ListViewDelegate | 添加交互代理 |
ListHeaderView | 添加頭部視圖 |
ListFooterView | 添加尾部視圖 |
SeparatorColor | 設(shè)置cell分割線的顏色 |
ListHeaderHeight | 設(shè)置頭部視圖的高度 |
ListFooterHeight | 設(shè)置尾部視圖的高度 |
SeparatorViewHeight | 設(shè)置cell分割線的高度 |
AllowsHeadAndFootHover | 允許頭和尾的懸停 |
AllowsSelection | 是否開啟cell選擇 |
AllowsMultipleSelection | 是否可以多選cell |
CAListView 方法(點(diǎn)擊查看方法介紹)
方法 | 說明 |
setAllowsSelection | 是否開啟cell選擇 |
setAllowsMultipleSelection | 是否可以多選cell |
setSelectAtIndex | 根據(jù)索引設(shè)置cell為選中狀態(tài) |
setUnSelectAtIndex | 根據(jù)索引設(shè)置cell為未選中狀態(tài) |
setShowsScrollIndicators | 設(shè)置顯示滾動(dòng)條 |
dequeueReusableCellWithIdentifier | 可以重用單元標(biāo)示符 |
cellForRowAtIndex | 通過cell索引獲取Index |
switchPCMode | 開關(guān)PC模式 |
ccTouchBegan | 觸摸事件開始時(shí)的回調(diào)函數(shù) |
ccTouchMoved | 觸摸事件中觸點(diǎn)移動(dòng)時(shí)的回調(diào)函數(shù) |
ccTouchEnded | 觸摸事件結(jié)束時(shí)的回調(diào)函數(shù) |
ccTouchCancelled | 觸摸非正常結(jié)束時(shí)的回調(diào)函數(shù)。(例如:電話或鎖屏) |
mouseMoved | 鼠標(biāo)移動(dòng) |
mouseMovedOutSide | 鼠標(biāo)移出 |
CAListViewDelegate 方法(點(diǎn)擊查看方法介紹)
方法 | 說明 |
listViewDidSelectCellAtIndex | 選中cell時(shí)調(diào)用 |
listViewDidDeselectCellAtIndex | 取消選擇cell時(shí)調(diào)用 |
CAListViewDataSource 方法(點(diǎn)擊查看方法介紹)
方法 | 說明 |
numberOfIndex | cell的總數(shù)量 |
listViewHeightForIndex | cell的高度 |
listViewCellAtIndex | 添加生成cell |
listViewWillDisplayCellAtIndex | 回調(diào)當(dāng)前將要顯示的CAListView |
CAListViewCell 屬性(點(diǎn)擊查看方法介紹)
屬性 | 說明 |
ContentView | 獲得內(nèi)容視圖 |
BackgroundView | 設(shè)置背景視圖 |
ReuseIdentifier | 設(shè)置重用標(biāo)識符 |
Index | 獲得重用標(biāo)識符 |
ControlStateEffect | 設(shè)置控制狀態(tài)效應(yīng) |
AllowsSelected | CAListViewCell是否可以選擇 |
CAListViewCell 方法(點(diǎn)擊查看方法介紹)
方法 | 說明 |
create | 創(chuàng)建,默認(rèn)Frame為(0,0,0,0) |
initWithReuseIdentifier | 重用標(biāo)識符初始化 |
了解CAListView的主要函數(shù),我們來實(shí)現(xiàn)一個(gè)CAListView的列表視圖。
第一步:創(chuàng)建我們自己的cell
我們需要?jiǎng)?chuàng)建一個(gè)先的class,我這里創(chuàng)建一個(gè)MyCell,并繼承CAListViewCell。用于每個(gè)列表單元的布局顯示,下面看一下MyCell.h和MyCell.cpp的代碼實(shí)現(xiàn)。
#pragma once
#include "CrossApp.h"
class MyCell : public CAListViewCell
{
public:
MyCell();
~MyCell();
//創(chuàng)建MyCell
static MyCell* create(const std::string& identifier, const DRect& _rect = DRectZero);
public:
//初始化Cell
void initWithCell();
//設(shè)置回調(diào)
void cellBtnCallback(CAControl* btn, DPoint point);
protected:
//正常狀態(tài)
virtual void normalListViewCell();
//高亮狀態(tài)
virtual void highlightedListViewCell();
//選中狀態(tài)
virtual void selectedListViewCell();
//禁用狀態(tài)
virtual void disabledListViewCell();
};
MyCell.cpp代碼如下:
#include "MyCell.h"
MyCell::MyCell()
{
}
MyCell::~MyCell()
{
}
MyCell* MyCell::create(const std::string& identifier, const DRect& _rect)
{
MyCell* listViewCell = new MyCell();
//設(shè)置重用標(biāo)示符
if (listViewCell&&listViewCell->initWithReuseIdentifier(identifier))
{
//設(shè)置Frame范圍
listViewCell->setFrame(_rect);
//設(shè)置為內(nèi)存自動(dòng)釋放
listViewCell->autorelease();
return listViewCell;
}
//如果創(chuàng)建失敗安全釋放內(nèi)存
CC_SAFE_DELETE(listViewCell);
return NULL;
}
void MyCell::initWithCell()
{
//獲得當(dāng)前的寬度
DSize _size = this->getFrame().size;
//創(chuàng)建CALabel
CALabel* test = CALabel::createWithCenter(DRect(_size.width*0.5,
_size.height*0.5,
_size.width*0.8,
_size.height));
test->setTextAlignment(CATextAlignmentCenter);
test->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);
test->setFontSize(_px(40));
test->setTag(100);
this->addSubview(test);
}
void MyCell::cellBtnCallback(CAControl* btn, DPoint point)
{
CCLog("MyCell::cellBtnCallback-->");
}
void MyCell::normalListViewCell()
{
this->setBackgroundView(CAView::createWithColor(CAColor_white));
}
void MyCell::highlightedListViewCell()
{
this->setBackgroundView(CAView::createWithColor(CAColor_yellow));
}
void MyCell::selectedListViewCell()
{
this->setBackgroundView(CAView::createWithColor(CAColor_orange));
}
void MyCell::disabledListViewCell()
{
this->setBackgroundView(CAView::createWithColor(CAColor_black));
}
CAListView 屬性介紹
類型:CAListViewOrientation*
解釋:listView的滾動(dòng)方向。set/get{}。
類型:CAListViewDataSource*
解釋:添加數(shù)據(jù)代理。set/get{}。
類型:CAListViewDelegate*
解釋:添加交互代理。set/get{}。
類型:CAView*
解釋:添加頭部視圖。set/get{}。
類型:CAView*
解釋:添加尾部視圖。set/get{}。
類型:CAColor4B
解釋:設(shè)置cell分割線的顏色。set/get{}。
類型:unsigned int
解釋:設(shè)置頭部視圖的高度。set/get{}。
類型:unsigned int
解釋:設(shè)置尾部視圖的高度。set/get{}。
類型:unsigned int
解釋:設(shè)置fell分割線的高度。set/get{}。
類型:bool
解釋:允許頭和尾的懸停。set/get{}。
類型:bool
解釋:是否開啟cell選擇。is{}。
類型:bool
解釋:是否可以多選cell。is{}。
CAListView 方法介紹
virtual void setAllowsSelection(bool var);
返回值:virtual void
參數(shù):
類型 | 參數(shù)名 | 說明 |
bool | var |
解釋:是否可以多選cell
void setSelectAtIndex(unsigned int index);
返回值:void
參數(shù):
類型 | 參數(shù)名 | 說明 |
unsigned int | index | cell的索引值 |
解釋:根據(jù)索引設(shè)置cell為選中狀態(tài)
void setUnSelectAtIndex(unsigned int index);
返回值:void
參數(shù):
類型 | 參數(shù)名 | 說明 |
unsigned int | index | cell的索引值 |
解釋:根據(jù)索引設(shè)置cell為未選中狀態(tài)
virtual void setShowsScrollIndicators(bool var);
返回值:virtual void
參數(shù):
類型 | 參數(shù)名 | 說明 |
bool | var | 是否顯示滾動(dòng)條 |
解釋:設(shè)置顯示滾動(dòng)條
CAListViewCell* dequeueReusableCellWithIdentifier(const char* reuseIdentifier);
返回值:CAListViewCell*
參數(shù):
類型 | 參數(shù)名 | 說明 |
const char* | reuseIdentifier | 標(biāo)識符 |
解釋:可以重用單元標(biāo)示符
CAListViewCell* cellForRowAtIndex(unsigned int index);
返回值:CAListViewCell*
參數(shù):
類型 | 參數(shù)名 | 說明 |
unsigned int | index | cell的索引值 |
解釋:通過cell索引獲取Index
virtual void switchPCMode(bool var)
返回值:virtual void
參數(shù):
類型 | 參數(shù)名 | 說明 |
bool | var | 開關(guān) |
解釋:開關(guān)PC模式
virtual bool ccTouchBegan(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual bool
參數(shù):
類型 | 參數(shù)名 | 說明 |
CATouch* | pTouch | 觸摸傳遞對象 |
CAEvent* | pEvent | 此參數(shù)待定 |
解釋:觸摸事件開始時(shí)的回調(diào)函數(shù)
virtual void ccTouchMoved(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
參數(shù):
類型 | 參數(shù)名 | 說明 |
CATouch* | pTouch | 觸摸傳遞對象 |
CAEvent* | pEvent | 此參數(shù)待定 |
解釋:觸摸事件中觸點(diǎn)移動(dòng)時(shí)的回調(diào)函數(shù)
virtual void ccTouchEnded(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
參數(shù):
類型 | 參數(shù)名 | 說明 |
CATouch* | pTouch | 觸摸傳遞對象 |
CAEvent* | pEvent | 此參數(shù)待定 |
解釋:觸摸事件結(jié)束時(shí)的回調(diào)函數(shù)
virtual void ccTouchCancelled(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
參數(shù):
類型 | 參數(shù)名 | 說明 |
CATouch* | pTouch | 觸摸傳遞對象 |
CAEvent* | pEvent | 此參數(shù)待定 |
解釋:觸摸非正常結(jié)束時(shí)的回調(diào)函數(shù)。(例如:電話或鎖屏)
virtual void mouseMoved(CATouch* pTouch, CAEvent* pEvent);
返回值:virtual void
參數(shù):
類型 | 參數(shù)名 | 說明 |
CATouch* | pTouch | 傳遞對象 |
CAEvent* | pEvent | 此參數(shù)待定 |
解釋:鼠標(biāo)移動(dòng)
virtual void mouseMovedOutSide(CATouch* pTouch, CAEvent* pEvent);
返回值:virtual void
參數(shù):
類型 | 參數(shù)名 | 說明 |
CATouch* | pTouch | 傳遞對象 |
CAEvent* | pEvent | 此參數(shù)待定 |
解釋:鼠標(biāo)移出
CAListViewDelegate 方法介紹
virtual void listViewDidSelectCellAtIndex(CAListView *listView, unsigned int index)
返回值:virtual void
參數(shù):
類型 | 參數(shù)名 | 說明 |
CAListView | listView | 當(dāng)前的listView |
unsigned int | index | cell的索引值 |
解釋:選中cell時(shí)調(diào)用
virtual void listViewDidDeselectCellAtIndex(CAListView *listView, unsigned int index)
返回值:virtual void
參數(shù):
類型 | 參數(shù)名 | 說明 |
CAListView | listView | 當(dāng)前的listView |
unsigned int | index | cell的索引值 |
解釋:取消選擇cell時(shí)調(diào)用
CAListViewDataSource方法介紹
virtual unsigned int numberOfIndex(CAListView *listView)
返回值:virtual unsigned int
參數(shù):
類型 | 參數(shù)名 | 說明 |
CAListView | listView | 當(dāng)前的listView |
解釋:cell的總數(shù)量
virtual unsigned int listViewHeightForIndex(CAListView *listView, unsigned int index)
返回值:virtual unsigned int
參數(shù):
類型 | 參數(shù)名 | 說明 |
CAListView | listView | 當(dāng)前的listView |
unsigned int | index | cell的索引值 |
解釋:cell的高度
virtual CAListViewCell* listViewCellAtIndex(CAListView *listView, const DSize& cellSize, unsigned int index)
返回值:virtual CAListViewCell*
參數(shù):
類型 | 參數(shù)名 | 說明 |
CAListView | listView | 當(dāng)前的listView |
DSize | cellSize | cell的size |
unsigned int | index | cell的索引值 |
解釋:添加生成cell
virtual void listViewWillDisplayCellAtIndex(CAListView* table, CAListViewCell* cell, unsigned int index) ;
返回值:virtual void
參數(shù):
類型 | 參數(shù)名 | 說明 |
CAListView | listView | 當(dāng)前的listView |
CAListViewCell | cell | 顯示添加的cell |
unsigned int | index | cell的索引值 |
解釋:回調(diào)當(dāng)前將要顯示的CAListView
CAListViewCell 屬性介紹
類型:CAView*
解釋:獲得內(nèi)容視圖。get{}。
類型:CAView*
解釋:設(shè)置背景視圖。set/get{}。
類型:std::string
解釋:設(shè)置重用標(biāo)識符。set/get{}。
類型:unsigned int
解釋:獲得重用標(biāo)識符。set/get{}。
類型:bool
解釋:設(shè)置控制狀態(tài)效應(yīng)。is/set{}。
類型:bool
解釋:CAListViewCell是否可以選擇。is/set{}。
CAListViewCell 方法介紹
static CAListViewCell* create(const std::string& reuseIdentifier);
返回值:static CAListViewCell*
參數(shù):
類型 | 參數(shù)名 | 說明 |
std::string& | reuseIdentifier | 重用標(biāo)識符 |
解釋:創(chuàng)建,默認(rèn)Frame為(0,0,0,0)
virtual bool initWithReuseIdentifier(const std::string& reuseIdentifier);
返回值:virtual bool
參數(shù):
類型 | 參數(shù)名 | 說明 |
std::string& | reuseIdentifier | 重用標(biāo)識符 |
解釋:創(chuàng)建一個(gè)空CAListViewCell,默認(rèn)Frame為(0,0,0,0)
更多建議: