summaryrefslogtreecommitdiffstats
path: root/src/android/support/v7/widget/qnativeandroidrecyclerview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/android/support/v7/widget/qnativeandroidrecyclerview.cpp')
-rw-r--r--src/android/support/v7/widget/qnativeandroidrecyclerview.cpp46
1 files changed, 29 insertions, 17 deletions
diff --git a/src/android/support/v7/widget/qnativeandroidrecyclerview.cpp b/src/android/support/v7/widget/qnativeandroidrecyclerview.cpp
index 4f38fcf..6bffa43 100644
--- a/src/android/support/v7/widget/qnativeandroidrecyclerview.cpp
+++ b/src/android/support/v7/widget/qnativeandroidrecyclerview.cpp
@@ -35,35 +35,45 @@
****************************************************************************/
#include "qnativeandroidrecyclerview_p.h"
+#include "qnativeandroidviewgroup_p_p.h"
#include "qnativeandroidrecycleradapter_p.h"
#include "qtnativeandroidfunctions_p.h"
QT_BEGIN_NAMESPACE
-QNativeAndroidRecyclerView::QNativeAndroidRecyclerView(QNativeAndroidContext *context) :
- QNativeAndroidViewGroup(context), m_adapter(0)
+class QNativeAndroidRecyclerViewPrivate : public QNativeAndroidViewGroupPrivate
+{
+public:
+ QNativeAndroidRecyclerAdapter *adapter = nullptr;
+ QAndroidJniObject layoutManager;
+};
+
+QNativeAndroidRecyclerView::QNativeAndroidRecyclerView(QNativeAndroidContext *context)
+ : QNativeAndroidViewGroup(*(new QNativeAndroidRecyclerViewPrivate), context)
{
}
QNativeAndroidRecyclerAdapter *QNativeAndroidRecyclerView::adapter() const
{
- return m_adapter;
+ Q_D(const QNativeAndroidRecyclerView);
+ return d->adapter;
}
void QNativeAndroidRecyclerView::setAdapter(QNativeAndroidRecyclerAdapter *adapter)
{
- if (m_adapter != adapter) {
- if (m_adapter) {
- m_adapter->setContext(0);
- disconnect(m_adapter, &QNativeAndroidObject::instanceChanged, this, &QNativeAndroidRecyclerView::updateAdapter);
- m_adapter->destruct();
+ Q_D(QNativeAndroidRecyclerView);
+ if (d->adapter != adapter) {
+ if (d->adapter) {
+ d->adapter->setContext(0);
+ disconnect(d->adapter, &QNativeAndroidObject::instanceChanged, this, &QNativeAndroidRecyclerView::updateAdapter);
+ d->adapter->destruct();
}
- m_adapter = adapter;
- if (m_adapter) {
- m_adapter->setContext(context());
- connect(m_adapter, &QNativeAndroidObject::instanceChanged, this, &QNativeAndroidRecyclerView::updateAdapter);
+ d->adapter = adapter;
+ if (d->adapter) {
+ d->adapter->setContext(context());
+ connect(d->adapter, &QNativeAndroidObject::instanceChanged, this, &QNativeAndroidRecyclerView::updateAdapter);
if (isValid())
- m_adapter->construct();
+ d->adapter->construct();
}
emit adapterChanged();
}}
@@ -77,13 +87,14 @@ QAndroidJniObject QNativeAndroidRecyclerView::onCreate()
void QNativeAndroidRecyclerView::onInflate(QAndroidJniObject& instance)
{
- m_layoutManager = QAndroidJniObject("android/support/v7/widget/LinearLayoutManager",
+ Q_D(QNativeAndroidRecyclerView);
+ d->layoutManager = QAndroidJniObject("android/support/v7/widget/LinearLayoutManager",
"(Landroid/content/Context;)V",
ctx().object());
instance.callMethod<void>("setLayoutManager",
"(Landroid/support/v7/widget/RecyclerView$LayoutManager;)V",
- m_layoutManager.object());
+ d->layoutManager.object());
QNativeAndroidViewGroup::onInflate(instance);
}
@@ -97,11 +108,12 @@ void QNativeAndroidRecyclerView::objectChange(ObjectChange change)
void QNativeAndroidRecyclerView::updateAdapter()
{
- if (!isValid() || !m_adapter)
+ Q_D(QNativeAndroidRecyclerView);
+ if (!isValid() || !d->adapter)
return;
QAndroidJniObject view = instance();
- QAndroidJniObject adapter = m_adapter->instance();
+ QAndroidJniObject adapter = d->adapter->instance();
QtNativeAndroid::callFunction([=]() {
view.callMethod<void>("setAdapter", "(Landroid/support/v7/widget/RecyclerView$Adapter;)V", adapter.object());
});