2020-4-7 seo達人
在TinyUI簡介的博客中提到其特點中包含一條,即多數(shù)大控件的使用方法和android一直,除了語言差異之外,本篇我們就介紹列表控件TUIListView最簡單的使用方法。
列表組件/控件作為目前Android/iOS的APP中最常用的控件,該控件的設(shè)計同時參考Android、windows、Qt等使用的經(jīng)驗進行篩選,最終選擇了Android的ListView設(shè)計,其他平臺的列表中使用難以程度或設(shè)計上略遜于Android,因為Android給與了開發(fā)者最大的發(fā)揮控件,你可以在列表中可以顯示任何控件。
TUIListView中的每一行每一列你可以放置任何UI組件,使用TUIListView需要配合TUIAdapter進行使用,而TinyUI和Android一樣提供了內(nèi)置的簡單使用的TUISimpleAdapter。TUISimpleAdapter主要用于顯示文本(即每一行都是只能顯示文字),如果需要在列表中顯示其他UI組件,則需要自定義一個Adapter,關(guān)于自定義Adapter將在后續(xù)進行詳細講解。
本篇既然是TUIListView最簡單的使用,我們就使用TUISimpleAdapter來顯示文本你列表,TUISimpleAdapter最好只用于數(shù)據(jù)步發(fā)生變化的情況,因為其存放的數(shù)據(jù)使用了C++標準庫的vector容器,而非使用list容器,vector容器的特點是訪問速度快,但其缺點是vector的內(nèi)存是連續(xù)的,因此內(nèi)容發(fā)生變化可能會造成內(nèi)存申請和拷貝的動作;而list容器使用的雙向鏈表,其特點是插入數(shù)據(jù)快,但訪問速度慢。
本篇我們?nèi)匀皇褂蒙弦黄凶远x的MyWindow來顯示TUIListView。
使用方法/步驟
class MyWindow : public TUIWindow
{
public:
MyWindow(TUIWindow* parent = nullptr);
virtual ~MyWindow();
void onShow();
void onClose();
private:
TUIListView listView;
TUISimpleAdapter adapter;
};
MyWindow::MyWindow(TUIWindow* parent)
: TUIWindow(parent)
{
setContentView(&this->listView); // 把listView作為當(dāng)前窗口的內(nèi)容視圖
vector<string> data; // 使用vector<string>類型的data存放數(shù)據(jù)
for (int32_t i = 0; i < 20; i++)
{
data.push_back(to_string(i)); // 生成0~20的數(shù)值-轉(zhuǎn)換成字符串,放到data中
}
this->adapter.setData(data); // 把data設(shè)置到adapter中
this->listView.setAdapter(&this->adapter); // 把adapter設(shè)置到listView,作為listView數(shù)據(jù)來源和操作對象
}
MyWindow::~MyWindow()
{
}
void MyWindow::onShow()
{
}
void MyWindow::onClose()
{
}
到目前為止窗口顯示列表控件已全部完成,接下來和上一篇一樣調(diào)用MyWindow的show()方法即可顯示,最終結(jié)果如下圖所示:
藍藍設(shè)計的小編 http://www.wnxcall.com