在上一篇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()方法即可显示,最终结果如下图所示: