Skip to content

Commit 16b2023

Browse files
committed
Merge remote-tracking branch 'origin/master'
2 parents b5036fa + a1d9a66 commit 16b2023

File tree

10 files changed

+135
-16
lines changed

10 files changed

+135
-16
lines changed

app/src/main/java/com/testerhome/nativeandroid/Config.java

+3
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ public class Config {
1919
public static final String FOLLOW = "Follow";
2020
public static final String TOPIC = "Topic";
2121

22+
public static final String PRAISE_TOPIC = "topic";
23+
public static final String PRAISE_REPLY = "reply";
24+
2225
public static String getImageUrl(String imagePath){
2326
if(!imagePath.contains("https://testerhome.com")){
2427
return "https://testerhome.com".concat(imagePath);

app/src/main/java/com/testerhome/nativeandroid/fragments/HomeFragment.java

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ protected void setupView() {
3939

4040
tabLayoutTopicsTab.setupWithViewPager(viewPagerTopics);
4141
tabLayoutTopicsTab.setTabsFromPagerAdapter(mAdapter);
42+
4243
}
4344

4445
public class TopicViewPagerAdapter extends FragmentPagerAdapter {

app/src/main/java/com/testerhome/nativeandroid/fragments/TopicDetailFragment.java

+24
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import com.testerhome.nativeandroid.R;
1616
import com.testerhome.nativeandroid.auth.TesterHomeAccountService;
1717
import com.testerhome.nativeandroid.models.CollectTopicResonse;
18+
import com.testerhome.nativeandroid.models.PraiseEntity;
1819
import com.testerhome.nativeandroid.models.TesterUser;
1920
import com.testerhome.nativeandroid.models.TopicDetailEntity;
2021
import com.testerhome.nativeandroid.models.TopicDetailResponse;
@@ -57,6 +58,8 @@ public class TopicDetailFragment extends BaseFragment {
5758

5859
@Bind(R.id.tv_detail_collect)
5960
TextView tvDetailCollect;
61+
@Bind(R.id.tv_detail_praise)
62+
TextView tvDetailPraise;
6063

6164
public static TopicDetailFragment newInstance(String topicId) {
6265
Bundle args = new Bundle();
@@ -157,4 +160,25 @@ public void failure(RetrofitError error) {
157160
});
158161

159162
}
163+
164+
165+
@OnClick(R.id.tv_detail_praise)
166+
void onDetailPraiseClick() {
167+
if (mCurrentUser == null) {
168+
mCurrentUser = TesterHomeAccountService.getInstance(getActivity()).getActiveAccountInfo();
169+
}
170+
TesterHomeApi.getInstance().getTopicsService().praiseTopic(Config.PRAISE_TOPIC, mTopicId, mCurrentUser.getAccess_token(), new Callback<PraiseEntity>() {
171+
@Override
172+
public void success(PraiseEntity praiseEntity, Response response) {
173+
Toast.makeText(getActivity(), "点赞成功", Toast.LENGTH_SHORT).show();
174+
tvDetailPraise.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_heart_red, 0, 0, 0);
175+
}
176+
177+
@Override
178+
public void failure(RetrofitError error) {
179+
Toast.makeText(getActivity(), error.getMessage(), Toast.LENGTH_SHORT).show();
180+
}
181+
});
182+
183+
}
160184
}

app/src/main/java/com/testerhome/nativeandroid/fragments/TopicsListFragment.java

+2
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ public void onActivityCreated(Bundle savedInstanceState) {
7070
loadTopics(true);
7171
}
7272

73+
74+
7375
@Override
7476
protected void setupView() {
7577
mAdatper = new TopicsListAdapter(getActivity());
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.testerhome.nativeandroid.models;
2+
3+
/**
4+
* Created by cvtpc on 2015/10/24.
5+
*/
6+
public class PraiseEntity {
7+
8+
private String obj_type;
9+
private String obj_id;
10+
private String count;
11+
12+
public String getObj_type() {
13+
return obj_type;
14+
}
15+
16+
public void setObj_type(String obj_type) {
17+
this.obj_type = obj_type;
18+
}
19+
20+
public String getObj_id() {
21+
return obj_id;
22+
}
23+
24+
public void setObj_id(String obj_id) {
25+
this.obj_id = obj_id;
26+
}
27+
28+
public String getCount() {
29+
return count;
30+
}
31+
32+
public void setCount(String count) {
33+
this.count = count;
34+
}
35+
}

app/src/main/java/com/testerhome/nativeandroid/networks/TopicsService.java

+7
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.testerhome.nativeandroid.models.CollectTopicResonse;
44
import com.testerhome.nativeandroid.models.CreateReplyResponse;
55
import com.testerhome.nativeandroid.models.NotificationResponse;
6+
import com.testerhome.nativeandroid.models.PraiseEntity;
67
import com.testerhome.nativeandroid.models.TopicDetailResponse;
78
import com.testerhome.nativeandroid.models.TopicReplyResponse;
89
import com.testerhome.nativeandroid.models.TopicsResponse;
@@ -79,4 +80,10 @@ void createReply(@Path("id") String id,
7980
void collectTopic(@Path("id") String id,
8081
@Query("access_token") String accessToken,
8182
Callback<CollectTopicResonse> callback);
83+
84+
@POST("/likes.json")
85+
void praiseTopic(@Query("obj_type") String objType,
86+
@Query("obj_id") String objId,
87+
@Query("access_token") String accessToken,
88+
Callback<PraiseEntity> callback);
8289
}

app/src/main/java/com/testerhome/nativeandroid/views/MainActivity.java

+1
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ public boolean onNavigationItemSelected(MenuItem menuItem) {
115115
homeFragment = new HomeFragment();
116116
fragmentTransaction.add(R.id.realtabcontent, homeFragment);
117117
}
118+
118119
fragmentTransaction.show(homeFragment);
119120
if (toolbar != null) {
120121
toolbar.setTitle("社区");

app/src/main/java/com/testerhome/nativeandroid/views/WebViewActivity.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import android.os.AsyncTask;
55
import android.os.Bundle;
66
import android.util.Log;
7+
import android.view.View;
78
import android.webkit.WebView;
89
import android.webkit.WebViewClient;
910
import android.widget.FrameLayout;
@@ -43,7 +44,7 @@ protected void onCreate(Bundle savedInstanceState) {
4344

4445
FrameLayout layout = (FrameLayout) findViewById(R.id.container);
4546

46-
WebView mWebView = new WebView(this);
47+
final WebView mWebView = new WebView(this);
4748

4849
layout.addView(mWebView);
4950

@@ -64,6 +65,7 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) {
6465
}
6566
} else if (url.equals(AuthenticationService.HTTPS_BASEURL)) {
6667
url = AuthenticationService.getAuthorizationUrl();
68+
mWebView.setVisibility(View.INVISIBLE);
6769
}
6870
// return super.shouldOverrideUrlLoading(view, url);
6971
view.loadUrl(url);

app/src/main/java/com/testerhome/nativeandroid/views/adapters/TopicReplyAdapter.java

+44-15
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import android.support.v7.widget.RecyclerView;
77
import android.text.Html;
88
import android.text.TextUtils;
9+
import android.view.LayoutInflater;
910
import android.view.View;
1011
import android.view.ViewGroup;
1112
import android.widget.LinearLayout;
@@ -26,31 +27,39 @@
2627
public class TopicReplyAdapter extends BaseAdapter<TopicReplyEntity> {
2728

2829
public static String TAG = "TopicReplyAdapter";
30+
private final int VIEW_ITEM = 1;
31+
private final int VIEW_DELETE_ITEM = 0;
2932

3033
public TopicReplyAdapter(Context context) {
3134
super(context);
3235
}
3336

37+
38+
@Override
39+
public int getItemViewType(int position) {
40+
return mItems.get(position).isDeleted() ? VIEW_DELETE_ITEM : VIEW_ITEM ;
41+
}
42+
3443
@Override
3544
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
36-
View view = View.inflate(parent.getContext(), R.layout.list_item_reply, null);
37-
return new ReplyViewHolder(view);
45+
if (viewType == VIEW_ITEM) {
46+
View view = View.inflate(parent.getContext(), R.layout.list_item_reply, null);
47+
return new ReplyViewHolder(view);
48+
} else {
49+
View view = LayoutInflater.from(parent.getContext()).inflate(
50+
R.layout.list_item_delete_reply, parent, false);
51+
return new DeleteFloorHolder(view);
52+
}
53+
3854
}
3955

4056
@Override
4157
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
42-
ReplyViewHolder holder = (ReplyViewHolder) viewHolder;
4358

44-
TopicReplyEntity topicReplyEntity = mItems.get(position);
4559

46-
if (topicReplyEntity.isDeleted()) {
47-
holder.userAvatar.setVisibility(View.INVISIBLE);
48-
holder.topicItemAuthor.setVisibility(View.INVISIBLE);
49-
holder.topicTime.setVisibility(View.INVISIBLE);
50-
holder.praiseReplyLayout.setVisibility(View.INVISIBLE);
51-
holder.topicItemBody.setText("该楼层已被删除");
52-
holder.topicItemBody.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG); //中划线
53-
} else {
60+
if (viewHolder instanceof ReplyViewHolder) {
61+
TopicReplyEntity topicReplyEntity = mItems.get(position);
62+
ReplyViewHolder holder = (ReplyViewHolder) viewHolder;
5463
holder.praiseReplyLayout.setVisibility(View.VISIBLE);
5564
holder.userAvatar.setVisibility(View.VISIBLE);
5665
holder.topicItemAuthor.setVisibility(View.VISIBLE);
@@ -63,9 +72,16 @@ public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
6372
holder.topicItemBody.getPaint().setFlags(0);
6473
holder.userAvatar.setImageURI(Uri.parse(Config.getImageUrl(topicReplyEntity.getUser().getAvatar_url())));
6574

66-
if (position == mItems.size() - 1 && mListener != null) {
67-
mListener.onListEnded();
68-
}
75+
} else {
76+
DeleteFloorHolder holder = (DeleteFloorHolder) viewHolder;
77+
holder.topicItemBody.setText("该楼层已被删除");
78+
holder.topicItemBody.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG); //中划线
79+
80+
81+
}
82+
83+
if (position == mItems.size() - 1 && mListener != null) {
84+
mListener.onListEnded();
6985
}
7086
}
7187

@@ -102,4 +118,17 @@ public ReplyViewHolder(View itemView) {
102118

103119
}
104120

121+
public static class DeleteFloorHolder extends RecyclerView.ViewHolder{
122+
123+
124+
@Bind(R.id.id_topic_item_content)
125+
TextView topicItemBody;
126+
127+
public DeleteFloorHolder(View itemView) {
128+
super(itemView);
129+
ButterKnife.bind(this, itemView);
130+
}
131+
}
132+
133+
105134
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:layout_width="match_parent"
4+
android:layout_height="wrap_content"
5+
android:padding="16dp">
6+
7+
<TextView
8+
android:id="@+id/id_topic_item_content"
9+
android:layout_width="wrap_content"
10+
android:layout_height="wrap_content"
11+
android:layout_centerInParent="true"
12+
/>
13+
14+
15+
</RelativeLayout>

0 commit comments

Comments
 (0)