Skip to content

Commit 1916ccf

Browse files
committed
Client:用户详情UserActivity新增个人相册
1 parent e558802 commit 1916ccf

4 files changed

Lines changed: 123 additions & 13 deletions

File tree

APIJSON(Android)/APIJSON(ADT)/APIJSONApp/APIJSONApp/res/layout/user_activity.xml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,28 @@
6464
style="@style/divider_horizontal_1px"
6565
android:layout_marginBottom="@dimen/padding_huge" />
6666

67+
<LinearLayout
68+
android:id="@+id/llUserMoment"
69+
style="@style/content_item_white"
70+
android:layout_height="wrap_content"
71+
android:minHeight="50dp" >
72+
73+
<TextView
74+
style="@style/content_item_lf_tv_black"
75+
android:text="个人相册" />
76+
77+
<GridView
78+
android:id="@+id/gvUserMoment"
79+
style="@style/content_item_rt"
80+
android:layout_height="wrap_content"
81+
android:layout_weight="1"
82+
android:horizontalSpacing="6dp"
83+
android:numColumns="3"
84+
android:scrollbars="@null" />
85+
86+
<ImageView style="@style/content_item_rt_img" />
87+
</LinearLayout>
88+
6789
<View style="@style/divider_horizontal_1px" />
6890

6991
<LinearLayout

APIJSON(Android)/APIJSON(ADT)/APIJSONApp/APIJSONApp/src/apijson/demo/client/activity_fragment/UserActivity.java

Lines changed: 83 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,16 @@
1414

1515
package apijson.demo.client.activity_fragment;
1616

17+
import java.util.ArrayList;
18+
import java.util.List;
19+
1720
import zuo.biao.apijson.JSONRequest;
1821
import zuo.biao.apijson.JSONResponse;
1922
import zuo.biao.library.base.BaseView.OnDataChangedListener;
2023
import zuo.biao.library.interfaces.OnBottomDragListener;
2124
import zuo.biao.library.manager.CacheManager;
2225
import zuo.biao.library.manager.HttpManager.OnHttpResponseListener;
26+
import zuo.biao.library.model.Entry;
2327
import zuo.biao.library.ui.AlertDialog;
2428
import zuo.biao.library.ui.AlertDialog.OnDialogButtonClickListener;
2529
import zuo.biao.library.ui.BottomMenuView;
@@ -28,6 +32,7 @@
2832
import zuo.biao.library.ui.CutPictureActivity;
2933
import zuo.biao.library.ui.EditTextInfoActivity;
3034
import zuo.biao.library.ui.EditTextInfoWindow;
35+
import zuo.biao.library.ui.GridAdapter;
3136
import zuo.biao.library.ui.SelectPictureActivity;
3237
import zuo.biao.library.ui.TextClearSuit;
3338
import zuo.biao.library.ui.WebViewActivity;
@@ -36,17 +41,22 @@
3641
import zuo.biao.library.util.JSON;
3742
import zuo.biao.library.util.Log;
3843
import zuo.biao.library.util.StringUtil;
44+
import android.annotation.SuppressLint;
3945
import android.app.Activity;
4046
import android.content.Context;
4147
import android.content.Intent;
4248
import android.os.Bundle;
49+
import android.view.MotionEvent;
4350
import android.view.View;
4451
import android.view.View.OnClickListener;
52+
import android.view.View.OnTouchListener;
4553
import android.view.ViewGroup;
4654
import android.widget.EditText;
55+
import android.widget.GridView;
4756
import android.widget.TextView;
4857
import apijson.demo.client.R;
4958
import apijson.demo.client.base.BaseActivity;
59+
import apijson.demo.client.model.Moment;
5060
import apijson.demo.client.model.User;
5161
import apijson.demo.client.util.ActionUtil;
5262
import apijson.demo.client.util.HttpRequest;
@@ -116,6 +126,9 @@ protected void onCreate(Bundle savedInstanceState) {
116126
private ViewGroup llUserBusinessCardContainer;//方式三
117127
private UserView userView;
118128

129+
private View llUserMoment;
130+
private GridView gvUserMoment;
131+
119132
private EditText etUserRemark;
120133
private TextView tvUserTag;
121134

@@ -141,6 +154,9 @@ public void initView() {//必须调用
141154
//添加用户名片,这些方式都可>>>>>>>>>>>>>>>>>>>>>>>
142155

143156

157+
llUserMoment = findViewById(R.id.llUserMoment);
158+
gvUserMoment = (GridView) findViewById(R.id.gvUserMoment);
159+
144160
etUserRemark = (EditText) findViewById(R.id.etUserRemark);
145161
tvUserTag = (TextView) findViewById(R.id.tvUserTag);
146162

@@ -158,15 +174,32 @@ public void initView() {//必须调用
158174
}
159175

160176
private User user;
177+
private List<Moment> momentList;
178+
private GridAdapter adapter;
161179
/**显示用户
162180
* @param user_
163181
*/
164182
private void setUser(User user_) {
183+
setUser(user_, momentList);
184+
}
185+
/**显示用户
186+
* @param user_
187+
* @param momentList_
188+
*/
189+
private void setUser(User user_, List<Moment> momentList_) {
165190
this.user = user_;
191+
this.momentList = momentList_;
166192
if (user == null) {
167193
Log.w(TAG, "setUser user == null >> user = new User();");
168194
user = new User();
169195
}
196+
if (momentList == null) {
197+
momentList = new ArrayList<>();
198+
}
199+
final List<Entry<String, String>> list = new ArrayList<>();
200+
for (Moment moment : momentList) {
201+
list.add(new Entry<String, String>(moment.getFirstPicture()));
202+
}
170203

171204
runUiThread(new Runnable() {
172205

@@ -178,6 +211,13 @@ public void run() {
178211

179212
etUserRemark.setText(StringUtil.getTrimedString(user.getHead()));
180213
tvUserTag.setText(StringUtil.getTrimedString(user.getTag()));
214+
215+
if (adapter == null) {
216+
adapter = new GridAdapter(context);
217+
adapter.setHasName(false);
218+
gvUserMoment.setAdapter(adapter);
219+
}
220+
adapter.refresh(list);
181221
}
182222
});
183223
}
@@ -229,8 +269,25 @@ public void run() {
229269
bottomMenuView.bindView(MenuUtil.getMenuList(MenuUtil.USER, id, ! User.isFirend(currentUser, id)));
230270
}
231271

232-
setUser(CacheManager.getInstance().get(User.class, "" + id));//先加载缓存数据,比网络请求快很多
233-
HttpRequest.getUser(id, HTTP_GET, UserActivity.this);
272+
runThread(TAG + "run", new Runnable() {
273+
274+
@Override
275+
public void run() {
276+
//先加载缓存数据,比网络请求快很多
277+
user = CacheManager.getInstance().get(User.class, "" + id);
278+
momentList = CacheManager.getInstance().getList(Moment.class, "userId=" + id, 0, 3);
279+
runUiThread(new Runnable() {
280+
281+
@Override
282+
public void run() {
283+
setUser(user, momentList);
284+
}
285+
});
286+
287+
HttpRequest.getUser(id, true, HTTP_GET, UserActivity.this);
288+
}
289+
});
290+
234291
}
235292

236293

@@ -271,6 +328,17 @@ public void initEvent() {//必须调用
271328

272329
findViewById(R.id.llUserTag).setOnClickListener(this);
273330

331+
llUserMoment.setOnClickListener(this);
332+
gvUserMoment.setOnTouchListener(new OnTouchListener() {
333+
334+
@SuppressLint("ClickableViewAccessibility")
335+
@Override
336+
public boolean onTouch(View v, MotionEvent event) {
337+
llUserMoment.onTouchEvent(event);
338+
return false;
339+
}
340+
});
341+
274342
new TextClearSuit().addClearListener(etUserRemark, findViewById(R.id.ivUserRemarkClear));//清空备注按钮点击监听
275343

276344

@@ -378,13 +446,20 @@ public void onBottomMenuItemClick(int intentCode) {
378446

379447
@Override
380448
public void onHttpResponse(int requestCode, String resultJson, Exception e) {
381-
JSONResponse response = new JSONResponse(resultJson).getJSONResponse(User.class.getSimpleName());
382-
boolean isSucceed = JSONResponse.isSucceed(response);
449+
JSONResponse response = new JSONResponse(resultJson);
450+
JSONResponse response2 = response.getJSONResponse(User.class.getSimpleName());
451+
boolean isSucceed = JSONResponse.isSucceed(response2);
383452

384453
dismissProgress();
385454
switch (requestCode) {
386455
case HTTP_GET:
387-
setUser(new JSONResponse(resultJson).getObject(User.class));
456+
User user = response.getObject(User.class);
457+
if (JSONResponse.isSucceed(response) && (user == null || user.getId() <= 0)) {
458+
showShortToast("用户已注销");
459+
super.finish();//需要动画,且不需要保存缓存
460+
return;
461+
}
462+
setUser(user, response.getList(Moment.class.getSimpleName() + "[]", Moment.class));
388463
break;
389464
case HTTP_ADD:
390465
case HTTP_DELETE:
@@ -427,6 +502,9 @@ public void onDragBottom(boolean rightToLeft) {
427502
@Override
428503
public void onClick(View v) {
429504
switch (v.getId()) {
505+
case R.id.llUserMoment:
506+
toActivity(MomentListActivity.createIntent(context, id));
507+
break;
430508
case R.id.llUserTag:
431509
toActivity(EditTextInfoActivity.createIntent(context, "标签"
432510
, StringUtil.getTrimedString(tvUserTag)), REQUEST_TO_EDIT_TEXT_INFO);

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

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ public class Moment extends BaseModel {
3131

3232
private Long userId;
3333
private String content;
34-
private String picture;
3534
private List<String> pictureList;
3635
private List<Long> praiseUserIdList;
3736
private List<Long> commentIdList;
@@ -58,12 +57,8 @@ public Moment setContent(String content) {
5857
this.content = content;
5958
return this;
6059
}
61-
public String getPicture() {
62-
return picture;
63-
}
64-
public Moment setPicture(String picture) {
65-
this.picture = picture;
66-
return this;
60+
public String getFirstPicture() {
61+
return get(pictureList, 0);
6762
}
6863
public List<String> getPictureList() {
6964
return pictureList;

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

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,22 @@ public static void checkAuthCode(String phone, String code, int requestCode, OnH
258258
* @param listener
259259
*/
260260
public static void getUser(long id, int requestCode, OnHttpResponseListener listener) {
261-
get(new JSONRequest(new User(id)), requestCode, listener);
261+
getUser(id, false, requestCode, listener);
262+
}
263+
/**获取用户
264+
* @param id
265+
* @param withMomentList
266+
* @param requestCode
267+
* @param listener
268+
*/
269+
public static void getUser(long id, boolean withMomentList, int requestCode, OnHttpResponseListener listener) {
270+
JSONRequest request = new JSONRequest(new User(id));
271+
if (withMomentList) {
272+
request.add(new JSONRequest(Moment.class.getSimpleName()
273+
, new JSONRequest(KEY_USER_ID, id)) //.setColumns("userId,pictureList"))
274+
.toArray(3, 0, Moment.class.getSimpleName()));
275+
}
276+
get(request, requestCode, listener);
262277
}
263278
/**添加联系人
264279
* @param id

0 commit comments

Comments
 (0)