2016-10-27 2 views
0

У меня есть swipeView с GridView. Я создаю Gridview динамически на основе моего количества моделей. (Каждый gridView содержит только максимальную ячейку. т. Е. Если число моделей равно 7, я создаю второй gridView с последним элементом). Он работает нормально.Динамическая загрузка GridView показывает предыдущие данные

я столкнулся вопрос: Если у меня есть два GridViews, в то время как свиток ко второму пункту, то второй вид показывает то же самое первое просмотреть содержание до данных, загруженных на второй GridView. Вот мой код, есть ли какие-либо проблемы в моем коде? или Как я могу исправить проблему.

SwipeView { 
       id: home_Swipe 
       width: 1280 
       height: 542 
       x:145 
       y:0 
    // favouriteapp is model Id 
       Repeater{ 
        model:Math.ceil(favouriteapp.count /6) 
        Component { 

         id: contactDelegate 
         QuadTiles{ 
          id: gridItem 
          btn1_icon.source:favouriteapp.get(nIndex).icon1 
          btn3_icon.source:favouriteapp.get(nIndex).icon2 

          Connections{ 
           target:gridItem 
           // Selected 1st button from the grid 
           onGridButton1Pressed:{ 
           favouriteapp.setProperty(selectedItemIndex,"isLoaded",true) 

           } 
          } 


         } 

        }//Component 

        GridView{ 
         id: grid 
         x: 0 
         y: 20 
         width: 1280 
         height: 542 
         interactive: false 

         cellWidth: 360 
         cellHeight:240 

         model: utilObj.getPageGridCount(favouriteapp.count,home_Swipe.currentIndex) 
         delegate:contactDelegate 

        } 


       } // Repeater 



      }// SwipeView 

ответ

0

Проблема, как мне кажется, в том, что Math.ceil(count/6) то же самое до 6 значений. Когда значение не изменится, оно не будет инициировать обновление. Попробуйте добавить столько элементов, чтобы значение повысилось на 1. Уверен, тогда оно будет обновляться.

Короткое и грязное обходное решение должно проходить процедурно, сначала устанавливая модель Repeater в 0, а затем обратно в исходное значение каждый раз.
У меня нет QT, установленного на моем текущем устройстве, но я на 100% уверен, что это сработает.

Чтобы сделать это, вам нужно обрабатывать сигнал в favoriteapp.onCountChanged -handler установки модели первого до 0, а после этого обратно в Math.ceil(count/6)

Смежные вопросы