Модификация Android GET и POST для функции тегов - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь реализовать функцию тегов / @ упоминаний, используя модификацию в Android.Я знаю, что у Linkedin есть Spyglass для этой цели, но я хочу попробовать сам.

Это пример структуры JSON для @ GET

{
"audience": 1,
"author": {
    "avatarURL": "",
    "firstName": "Aidan",
    "profileId": "6e655ee0-ea71-4f3c-a145-d504e6e053db",
    "rank": 0,
    "score": 0,
    "surname": "Test",
    "trades": [],
    "verified": false
},
"createdTimestamp": "Mon, 05 Nov 2018 16:20:53 GMT",
"likes": [],
"numberOfComments": 1,
"photos": [],
"pinned": false,
"postId": "5825ce12-338f-48e0-8749-11e67f6560d7",
"postText": "@Matt Test1 ",
"trades": [],
"userLikesPost": false,
"videos": [],
"taggedUsers": [
    {
        "userId": "d0580bfa-9b4e-494a-bed6-11267001b1f0"
    }
]

}

идля @POST:

{
"Category": {
    "Skills":[
        {"SkillId": "C8BBBFEA-1B1D-4AE1-903E-3D9ED2C5506B"}
    ],
    "TradeId": "4E26267E-5DF5-44FE-8268-3DF19E05294E"
},
"Anonymous": false,
"QuestionText": "test question 22102",
"QuestionTitle": "test title",
"TaggedUserIds": ["336CE5BC-470C-4D28-82CB-F95F49254B6A", "154EE2C2-76CD-4DA5-921F-8876D3A2D26B"]

}

это конечные точки, которые я использовал

//Tagged User
@GET("api/posts/{postId}/taggedUsers")
Call<TaggedUser> getTaggedUser (@Path("postId") String postId );

@POST("api/posts/{postId}/userId")
Call <TaggedUserIds> addTaggedUser (@Path("postId")String postId,  @Body TaggedUserIds taggedUserIds);

, чтобы получить результаты (в конечном итоге) в представлении переработчика, котороеможет использоваться для выбора пользователя для пометки.

это фрагмент, который я буду использовать для вызова taggingList

if(charSequence.toString().contains("@")){
                    mTradeZappAPI.getTaggedUser(mTaggedUsers.getUserId()).enqueue(new Callback<TaggedUser>() {
                        @Override
                        public void onResponse(Call<TaggedUser> call, Response<TaggedUser> response) {
                            if(response.isSuccessful()){
                                //Display results in popUp window and allow user to select. Embed this into the mPostText EditText window.


                            }
                        }

                        @Override
                        public void onFailure(Call<TaggedUser> call, Throwable t) {

                        }
                    });
                }

пример класса модели:

public class TaggedUser implements Parcelable {

    @SerializedName("userId")
    @Expose
    private String userId;
    public final static Parcelable.Creator<TaggedUser> CREATOR = new Creator<TaggedUser>() {


        @SuppressWarnings({
                "unchecked"
        })
        public TaggedUser createFromParcel(Parcel in) {
            return new TaggedUser(in);
        }

        public TaggedUser[] newArray(int size) {
            return (new TaggedUser[size]);
        }

    }
            ;

    protected TaggedUser(Parcel in) {
        this.userId = ((String) in.readValue((String.class.getClassLoader())));
    }

    /**
     * No args constructor for use in serialization
     *
     */
    public TaggedUser() {
    }

    /**
     *
     * @param userId
     */
    public TaggedUser(String userId) {
        super();
        this.userId = userId;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this).append("userId", userId).toString();
    }

    public void writeToParcel(Parcel dest, int flags) {
        dest.writeValue(userId);
    }

    public int describeContents() {
        return 0;
    }

}

У меня возникают проблемы с возвратом каких-либо данных, и я знаю, что это связано с настройкой между моим классом API и способом, которым я вызываю БД.

...