在上一篇TinyUI-TUIListView最簡單的使用中介紹了TUIListView單列文本最基本的事情情況,顯示使用TinyUI內置的TUISimpleAdapter可以很輕鬆的完成單列文本列表。
實際開發過程中可能需要有多列顯示情況,如果只需顯示多列文本列表,TinyUI同樣也內置了用於多列文本顯示的adapter,即TUISimpleMultiAdapter,其使用與TUISimpleAdapter相似。
與上一篇TinyUI-TUIListView最簡單的使用介紹一樣,我們同樣使用TinyUI-TUIWindow-最簡單的自定義的MyWindow來展示多列文本列表。
使用方法/步驟
1. 定義listView和andapter
MyWindow中包含TUISimpleMultiAdapter.h的頭文件,並定義listView和adapter
MyWindow.h
#ifndef __MY_WINDOW_H__
#define __MY_WINDOW_H__
#include <TUIWindow.h>
#include <TUISimpleMultiAdapter.h>
class MyWindow : public TUIWindow
{
public:
MyWindow(TUIWindow* parent = nullptr);
virtual ~MyWindow();
void onShow();
void onClose();
private:
TUIListView listView;
TUISimpleMultiAdapter adapter;
};
#endif // !__MY_WINDOW_H__
2. 填充數據,並把adapter設置到listView中
MyWindow.cpp
#include "MyWindow.h"
MyWindow::MyWindow(TUIWindow* parent)
: TUIWindow(parent)
{
setContentView(&this->listView); // 把listView作爲當前窗口的內容視圖
map<int32_t, vector<string>> data; // 使用map<int32_t, vector<string>>類型的data存放數據
int32_t columnNum = 3; // 3列
string s;
for (int32_t row = 0; row < 20; row++) // 20行
{
/* 生成當前行每列數據 */
vector<string> rowData;
for (int32_t column = 0; column < columnNum; column++) // columnNum列
{
s = "行: " + to_string(row) + ", 列: " + to_string(column);
rowData.push_back(s);
}
data[row] = rowData; // 填充一行數據
}
this->adapter.setData(data); // 把數據設置到adapter中
this->adapter.setColumnNumber(columnNum); // 設置列數
this->listView.setAdapter(&this->adapter); // 把adapter設置到listView中
}
MyWindow::~MyWindow()
{
}
void MyWindow::onShow()
{
}
void MyWindow::onClose()
{
}
與TinyUI-TUIWindow-最簡單的自定義一樣調用MyWindow的show()方法即可顯示,最終結果如下圖所示: