2013-07-29 4 views
1

도와주세요.Listview에서 더미 이미지를 바꾸려면 Blackberry10

QML 파일에서 ListView를 만들고 webservice에서받은 데이터로 채 웁니다.이 웹 서비스는 이미지를 제공하지 않으므로 그 위치에 더미 이미지를 배치해야합니다. 그런 다음 url에서 이미지를 가져 오는 또 다른 방법을 사용했습니다. 이제 내 cpp 파일에 이미지가 있습니다. 그러나 목록보기를 업데이트 할 수 없습니다. 나는 많은 방법을 시도해 봤지만 실패했다. 다음은 제 코드입니다.

 ListView { 
      id: listView 
      objectName: "listView" 

      dataModel: ArrayDataModel { 
       id: myListModel 

      } 


      // Override default GroupDataModel::itemType() behaviour, which is to return item type "header" 
      listItemComponents: ListItemComponent { 
       id: listcomponent 
       // StandardListItem is a convivience component for lists with default cascades look and feel 
       StandardListItem { 
        id: stdlst 
        title: ListItemData.postText 
        description: ListItemData.postDate 
        status: ListItemData.filePath 
        imageSource: assets:///image.png 
       } 

      } 
      layoutProperties: StackLayoutProperties { 
       spaceQuota: 1.0 
      } 
      horizontalAlignment: HorizontalAlignment.Fill 
      verticalAlignment: VerticalAlignment.Fill 

     } 

이 목록보기의 imagource를 다른 이미지로 바꿔야합니다. 어떻게 할 수 있습니까? 당신이해야 할 일은

+0

제발 도와주세요 : ... ( –

답변

0

은 다음과 같습니다 대신 StandardListItemassets:///image.png에 영향을 미치는, 당신은 assets:///image.png 기본적으로 초기화 ListItemData의 속성을, 영향을 미칩니다. 완료되면 이미지를 가져올 때 데이터 항목의 속성을 수정하기 만하면됩니다.

은의이 표시 클래스 DataElement이라고 가정 해 봅시다 :

class DataElement: public QObject { 

    Q_OBJECT 

    Q_PROPERTY(QString postText READ getPostText CONSTANT); 
    Q_PROPERTY(QVariant image READ getImage WRITE setImage NOTIFY imageChanged); 
    // Other properties here... 

public: 
    DataElement() { 
     _postText = "Default text"; 
     _image = QVariant::fromValue(bb::cascades::Image(QUrl("file://" + QDir::homePath() + "/image.png"))); 
    } 

    QVariant image() const { 
     returm _image; 
    } 

    void setImage(QVariant image) { 
     if (image != _image) { 
      _image = image; 
      emit imageChanged(); 
     } 
    } 

    // Missing methods for other properties etc 

signals: 
    void imageChanged(); 

private: 
    QString  _postText; 
    QVariant _image; 
}; 

귀하의 ListItem는 다음과 같이 표시됩니다

StandardListItem { 
    id: stdlst 
    title: ListItemData.postText 
    description: ListItemData.postDate 
    status: ListItemData.filePath 
    image: ListItemData.image 
}

을 당신이 당신의 이미지를로드 할 때 지금, 당신은 당신의 DataElement에와 setImage 전화, 그에 따라 뷰가 새로 고쳐집니다.

+0

위의 코드에서 postText, postDate 및 filePath를 webservice call.But에서 채우고 있습니다.이 webservice는 이미지를 제공하지 않기 때문에이 위치에 더미 이미지를 넣습니다. . 나는 다른 웹 서비스를 호출 한 후에 만 ​​이미지를 가져올 수 있습니다. 이미지 QVariant를 가져 와서 StandardListItem의 이미지 섹션에 설정해야합니다. 이렇게 이미지를 업데이트 할 수 있습니까? –

+0

''StandardListItem' '는''image'' 속성을 가지고 있기 때문에이 속성을 사용자 정의 된 속성 (예 :''postText'',''postDate'' 및''filePath'')에 바인드 할 필요가 있습니다. 당신이 짐작했던 것처럼''QVariant''라고 입력하십시오 .2 번째 webservice 호출 결과가 나오기 전에, 사용자 정의 속성 값을 더미 이미지로 설정 한 다음 실제 이미지 값을받을 때 바꾸십시오. –

+0

repl y ... 이것에 대한 샘플 코드를 제공해 주시겠습니까? –