Skip to content

Commit 8e75a24

Browse files
committed
Client:动态点赞列表显示人名
1 parent da98f4e commit 8e75a24

5 files changed

Lines changed: 72 additions & 39 deletions

File tree

APIJSON(Android)/APIJSON(ADT)/APIJSONApp/APIJSONApp/src/apijson/demo/client/adapter/MomentAdapter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ public void onDataChanged() {
4848
list.remove(itemView.getPosition());
4949
} else {
5050
list.set(itemView.getPosition(), data);
51+
itemView.bindView(data);
5152
}
52-
refresh(list);
5353
}
5454
});
5555
return itemView;

APIJSON(Android)/APIJSON(ADT)/APIJSONApp/APIJSONApp/src/apijson/demo/client/model/MomentItem.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,11 +115,11 @@ public MomentItem setMoment(Moment moment) {
115115
return this;
116116
}
117117

118-
@NonNull
118+
// @NonNull
119119
public List<User> getUserList() {
120-
if (userList == null) {
121-
userList = new ArrayList<>();
122-
}
120+
// if (userList == null) {
121+
// userList = new ArrayList<>();
122+
// }
123123
return userList;
124124
}
125125
public MomentItem setUserList(List<User> userList) {

APIJSON(Android)/APIJSON(ADT)/APIJSONApp/APIJSONApp/src/apijson/demo/client/util/HttpRequest.java

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ public static void checkAuthCode(String phone, String code, int requestCode, OnH
249249

250250
//account>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
251251

252-
public static final String COLUMNS_USER_SIMPLE = "id,sex,name";
252+
public static final String COLUMNS_USER_SIMPLE = "id,name";
253253
public static final String COLUMNS_USER = "id,sex,name,head";
254254

255255
/**获取用户
@@ -371,24 +371,25 @@ public static void getUserList(int range, long id, com.alibaba.fastjson.JSONObje
371371
* @param listener
372372
*/
373373
public static void getMoment(long id, int requestCode, OnHttpResponseListener listener) {
374-
JSONRequest request = new JSONRequest();
375374

376-
//测试远程函数调用成功
377-
JSONRequest moment = new JSONRequest(KEY_ID, id);
378-
// moment.put("praiseCount()", "count(Collection:praiseUserIdList)");//测试成功
379-
// moment.put("praised()", "isContain(Collection:praiseUserIdList, userId)");//测试成功
380-
// moment.put("plus()", "plus(long:id,long:userId)");//测试成功
381-
// moment.put("@commentCount@", "Comment[]/total");
382-
request.put(Moment.class.getSimpleName(), moment);
375+
// //测试远程函数调用成功
376+
// JSONRequest request = new JSONRequest();
377+
// JSONRequest moment = new JSONRequest(KEY_ID, id);
378+
// // moment.put("praiseCount()", "count(Collection:praiseUserIdList)");//测试成功
379+
// // moment.put("praised()", "isContain(Collection:praiseUserIdList, userId)");//测试成功
380+
// // moment.put("plus()", "plus(long:id,long:userId)");//测试成功
381+
// // moment.put("@commentCount@", "Comment[]/total");
382+
// request.put(Moment.class.getSimpleName(), moment);
383383

384-
// request.put(new Moment(id));
384+
JSONRequest request = new JSONRequest(new Moment(id));
385385
request.put(User.class.getSimpleName(), new JSONRequest(ID_AT, "/Moment/userId"));
386+
// //praise <<<<<<<<<<<<<<<<<<
387+
// JSONRequest userItem = new JSONRequest();
388+
// userItem.put(User.class.getSimpleName(), new JSONRequest(ID_IN+"@", "Moment/praiseUserIdList")
389+
// .setColumn(COLUMNS_USER_SIMPLE));
390+
// request.add(userItem.toArray(20, 0, User.class.getSimpleName()));
391+
// //praise >>>>>>>>>>>>>>>>>>
386392

387-
JSONRequest commentItem = new JSONRequest();
388-
commentItem.put(Comment.class.getSimpleName(), new JSONRequest(MOMENT_ID_AT, "Moment/id"));
389-
// commentItem.put("release", "total:Moment/commentCount");
390-
// request.add(commentItem.toArray(3, 0, Comment.class.getSimpleName()));
391-
// request.put("commentCount@", "Comment[]/total");
392393
get(request, requestCode, listener);
393394
}
394395

@@ -436,21 +437,25 @@ public static void getMomentList(int range, long id, com.alibaba.fastjson.JSONOb
436437
default:
437438
break;
438439
}
439-
// moment.put("@commentCount@", "[]/CommentItem[]/total");
440440
moment.add(search);
441-
//测试远程函数调用成功
442-
// moment.put("praiseCount()", "count(Collection:praiseUserIdList)");
443-
// moment.put("praised()", "isContain(Collection:praiseUserIdList,userId)");
444441

445442
request.put(Moment.class.getSimpleName(), moment);
446443
request.put(User.class.getSimpleName(), new JSONRequest(ID_AT, "/Moment/userId").setColumn(COLUMNS_USER));
447444

445+
// //praise <<<<<<<<<<<<<<<<<<
446+
// JSONRequest userItem = new JSONRequest();
447+
// userItem.put(User.class.getSimpleName(), new JSONRequest(ID_IN+"@", "[]/Moment/praiseUserIdList")
448+
// .setColumn(COLUMNS_USER_SIMPLE));
449+
//
450+
// request.add(userItem.toArray(20, 0, User.class.getSimpleName()));
451+
//praise >>>>>>>>>>>>>>>>>>
452+
448453
//comment <<<<<<<<<<<<<<<<<<
449454
JSONRequest commentItem = new JSONRequest();
450455
commentItem.put(Comment.class.getSimpleName(), new JSONRequest(MOMENT_ID_AT, "[]/Moment/id"));
451-
commentItem.put(User.class.getSimpleName(), new JSONRequest(ID_AT, "/Comment/userId").setColumn(COLUMNS_USER_SIMPLE));
456+
commentItem.put(User.class.getSimpleName(), new JSONRequest(ID_AT, "/Comment/userId")
457+
.setColumn(COLUMNS_USER_SIMPLE));
452458

453-
// commentItem.put("release", "total:[]/Moment/commentCount");
454459
request.add(commentItem.toArray(10, 0, CommentItem.class.getSimpleName()));
455460
//comment >>>>>>>>>>>>>>>>>>
456461

APIJSON(Android)/APIJSON(ADT)/APIJSONApp/APIJSONApp/src/apijson/demo/client/view/MomentView.java

Lines changed: 39 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.util.ArrayList;
1818
import java.util.List;
1919

20+
import zuo.biao.apijson.JSONRequest;
2021
import zuo.biao.apijson.JSONResponse;
2122
import zuo.biao.library.base.BaseView;
2223
import zuo.biao.library.manager.CacheManager;
@@ -55,6 +56,7 @@
5556
import apijson.demo.client.model.Moment;
5657
import apijson.demo.client.model.MomentItem;
5758
import apijson.demo.client.model.User;
59+
import apijson.demo.client.server.model.BaseModel;
5860
import apijson.demo.client.util.HttpRequest;
5961

6062
/**作品View
@@ -184,34 +186,44 @@ public void bindView(MomentItem data_){
184186
// 图片
185187
setPicture(moment.getPictureList());
186188
// 点赞
187-
setPraise(data.getIsPraised(), data.getPraiseUserIdList());
189+
setPraise(data.getIsPraised(), data.getUserList(), data.getPraiseUserIdList());
188190
// 评论
189191
setComment(data.getCommentItemList());
190192

191193
vMomentViewDivider.setVisibility(llMomentViewPraise.getVisibility() == View.VISIBLE
192194
&& llMomentViewCommentContainer.getVisibility() == View.VISIBLE ? View.VISIBLE : View.GONE);
193195

196+
if (data.getUserList() == null && BaseModel.isEmpty(moment.getPraiseUserIdList()) == false) {
197+
// HttpRequest.getUserList(0, 0, null, moment.getPraiseUserIdList(), 0, 0, HTTP_GET_PRAISE, this);
198+
199+
JSONRequest userItem = new JSONRequest("id{}", moment.getPraiseUserIdList());
200+
userItem.setColumn("id", "name");
201+
JSONRequest listRequest = new JSONRequest(User.class.getSimpleName(), userItem);
202+
HttpRequest.get(listRequest.toArray(0, 0, User.class.getSimpleName()), HTTP_GET_PRAISE, this);
203+
}
194204
}
195205

196206

197207
/**设置赞
198208
* @param joined
199209
* @param list
200210
*/
201-
private void setPraise(boolean joined, List<Long> list) {
211+
private void setPraise(boolean joined, List<User> userList, List<Long> list) {
202212
ivMomentViewPraise.setImageResource(joined ? R.drawable.praised : R.drawable.praise);
203213

204-
llMomentViewPraise.setVisibility(list == null || list.isEmpty() ? View.GONE : View.VISIBLE);
205-
if (list != null) {
206-
List<User> userList = new ArrayList<User>();
207-
User u;
208-
for (Long id : list) {
209-
u = new User(id);
210-
u.setName("" + id);
211-
userList.add(u);
214+
if (userList == null || userList.isEmpty()) {
215+
if (list != null) {
216+
userList = new ArrayList<User>();
217+
User u;
218+
for (Long id : list) {
219+
u = new User(id);
220+
u.setName("" + id);
221+
userList.add(u);
222+
}
212223
}
213-
tvMomentViewPraise.setView(userList);
214224
}
225+
llMomentViewPraise.setVisibility(userList == null || userList.isEmpty() ? View.GONE : View.VISIBLE);
226+
tvMomentViewPraise.setView(userList);
215227
}
216228

217229
private boolean showComment = true;
@@ -393,6 +405,7 @@ public void onDialogButtonClick(int requestCode, boolean isPositive) {
393405
public static final int HTTP_PRAISE = 1;
394406
public static final int HTTP_CANCLE_PRAISE = 2;
395407
public static final int HTTP_DELETE = 3;
408+
public static final int HTTP_GET_PRAISE = 10;
396409
@Override
397410
public void onHttpResponse(int requestCode, String result, Exception e) {
398411
if (data == null) {
@@ -415,7 +428,7 @@ public void onHttpResponse(int requestCode, String result, Exception e) {
415428
case HTTP_DELETE:
416429
showShortToast(isSucceed ? R.string.delete_succeed : R.string.delete_failed);
417430
//只对adapter.getCount()有影响。目前是隐藏的,不需要通知,也不需要刷新adapter,用户手动刷新后自然就更新了。
418-
if(isSucceed) {
431+
if (isSucceed) {
419432
bindView(null);
420433
status = MomentItem.STATUS_DELETED;
421434
if (onDataChangedListener != null) {
@@ -426,6 +439,20 @@ public void onHttpResponse(int requestCode, String result, Exception e) {
426439
data.setMyStatus(MomentItem.STATUS_NORMAL);
427440
bindView(data);
428441
}
442+
case HTTP_GET_PRAISE:
443+
if (response.isSucceed()) {
444+
List<User> list = response.getList(User.class.getSimpleName() + "[]", User.class);
445+
if (list == null) {
446+
list = new ArrayList<>();//避免重复请求
447+
}
448+
data.setUserList(list);
449+
if (onDataChangedListener != null) {
450+
onDataChangedListener.onDataChanged();
451+
} else {
452+
bindView(data);
453+
}
454+
//滑动明显卡顿 CacheManager.getInstance().save(MomentItem.class, data, "" + data.getId());
455+
}
429456
break;
430457
}
431458
}

APIJSON(Android)/APIJSON(ADT)/APIJSONLibrary/src/zuo/biao/apijson/JSONObject.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,8 @@ public Object put(String key, Object value, boolean encode) {
175175
throw new IllegalArgumentException("put StringUtil.isNotEmpty(key, true) == false" +
176176
" && clazz == null || clazz.getAnnotation(APIJSONRequest.class) == null" +
177177
" \n key为空时仅支持 类型被@APIJSONRequest注解 的value !!!" +
178-
" \n 如果一定要这么用,请对 " + clazz.getName() + " 注解!");
178+
" \n 如果一定要这么用,请对 " + clazz.getName() + " 注解!" +
179+
" \n 如果是类似 key[]:{} 结构的请求,建议add(...)方法!");
179180
}
180181
key = value.getClass().getSimpleName();
181182
}

0 commit comments

Comments
 (0)