【问题标题】:Android retrieve individual items from a paginated query listAndroid 从分页查询列表中检索单个项目
【发布时间】:2016-05-22 16:22:00
【问题描述】:

我已经能够查询 AWS DynamoDb 并取回结果。结果来自歌曲数据库并返回诸如儿子姓名、音乐家、网址等信息。结果量按预期返回,因此我认为查询工作正常。这可能是非常基本的,但我不确定一旦获得列表,我将如何从列表中检索单个项目。

这是我的模型:

@DynamoDBTable(tableName = "Music")
public class SongDatabaseMappingAdapter {

    private String artist;
    private String songtitle;
    private String albumtitle;
    private String category;
    private int musicianrating;
    private int userrating;
    private String pictureurl;
    private String songurl;

    @DynamoDBHashKey(attributeName = "Artist")
    public String getArtist() {
        return artist;
    }

    public void setArtist(String artist) {
        this.artist = artist;
    }

    @DynamoDBRangeKey(attributeName = "SongTitle")
    public String getSongTitle() {
        return songtitle;
    }

    public void setSongTitle(String songtitle) {
        this.songtitle = songtitle;
    }


    @DynamoDBAttribute(attributeName = "AlbumTitle")
    public String getAlbumTitle() {
        return albumtitle;
    }

    public void setAlbumTitle(String albumtitle) {
        this.albumtitle = albumtitle;
    }


    @DynamoDBIndexHashKey(attributeName = "Category", globalSecondaryIndexName = "Category-UserRating-index")
    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }


    @DynamoDBAttribute(attributeName = "MusicianRating")
    public int getMusicianRating() {
        return musicianrating;
    }

    public void setMusicianRating(int musicianrating) {
        this.musicianrating = musicianrating;
    }


    @DynamoDBIndexRangeKey(attributeName = "UserRating", globalSecondaryIndexName = "Category-UserRating-index")
    public int getUserRating() {
        return userrating;
    }

    public void setUserRating(int userrating) {
        this.userrating = userrating;
    }


    @DynamoDBAttribute(attributeName = "PictureURL")
    public String getPictureURL() {
        return pictureurl;
    }

    public void setPictureURL(String pictureurl) {
        this.pictureurl = pictureurl;
    }


    @DynamoDBAttribute(attributeName = "SongURL")
    public String getSongURL() {
        return songurl;
    }

    public void setSongURL(String songurl) {
        this.songurl = songurl;
    }

}

这是我的查询:

public class getSongsInCategory extends AsyncTask  {

        @Override
        protected Object doInBackground(Object[] params) {


            SongDatabaseMappingAdapter songs = new SongDatabaseMappingAdapter();
            songs.setCategory("Rap");

            String userRatingQueryString = "5";

            Condition rangeKeyCondition = new Condition()
                    .withComparisonOperator(ComparisonOperator.EQ)
                    .withAttributeValueList(new AttributeValue().withN(userRatingQueryString));


            DynamoDBQueryExpression queryExpression = new DynamoDBQueryExpression()
                    .withHashKeyValues(songs)
                    .withIndexName("Category-UserRating-index")
                    .withRangeKeyCondition("UserRating", rangeKeyCondition)
                    .withConsistentRead(false);

            PaginatedQueryList<SongDatabaseMappingAdapter> result = mapper.query(SongDatabaseMappingAdapter.class, queryExpression);

这就是我检查结果的方式:

 for (int i = 0; i < result.size(); ++i) {

                SongDatabaseMappingAdapter obj = result.get(i);
                Log.i("Query Result", "Number"+i+obj.toString());
            }

这些是我得到的结果:

05-22 03:42:12.313 27594-27628/com.amazon.mysampleapp I/Query Result: Number0com.mysampleapp.demo.SongDatabaseMappingAdapter@52ae345c
05-22 03:42:12.313 27594-27628/com.amazon.mysampleapp I/Query Result: Number1com.mysampleapp.demo.SongDatabaseMappingAdapter@52ae520c
05-22 03:42:12.317 27594-27628/com.amazon.mysampleapp I/Query Result: Number2com.mysampleapp.demo.SongDatabaseMappingAdapter@52ae5334
05-22 03:42:12.317 27594-27628/com.amazon.mysampleapp I/Query Result: Number3com.mysampleapp.demo.SongDatabaseMappingAdapter@52ae545c 

所以我知道它至少可以部分工作,但现在我想从歌曲查询中获取各个部分并将它们放入 textviews、imageviews 媒体播放器等。

我可能错了,但我认为我必须使用我创建的模型,但我不确定如何使用。

感谢您的帮助。

【问题讨论】:

    标签: android amazon-web-services arraylist pagination amazon-dynamodb


    【解决方案1】:

    SongDatabaseMappingAdapter 实例有 getter?所以代替 obj.toString() 你做 obj.getArtist() 等等

    【讨论】:

    • 太棒了。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 2021-12-24
    • 1970-01-01
    • 2018-12-22
    • 2012-06-04
    • 2018-02-09
    • 2012-11-26
    相关资源
    最近更新 更多