Parcourir la Source

主题排序修改完成

huyuguo 5 ans auparavant
Parent
commit
ef9c43dc05

+ 24 - 8
app/src/main/java/com/electric/chargingpile/activity/TopicDetailActivity.java

15
import com.electric.chargingpile.adapter.TopicDetailAdapter;
15
import com.electric.chargingpile.adapter.TopicDetailAdapter;
16
import com.electric.chargingpile.application.MainApplication;
16
import com.electric.chargingpile.application.MainApplication;
17
import com.electric.chargingpile.data.HomePageBean;
17
import com.electric.chargingpile.data.HomePageBean;
18
import com.electric.chargingpile.iview.RecyclerItemTypeClickListener;
18
import com.electric.chargingpile.util.CommonParams;
19
import com.electric.chargingpile.util.CommonParams;
19
import com.electric.chargingpile.util.JsonUtils;
20
import com.electric.chargingpile.util.JsonUtils;
20
import com.electric.chargingpile.util.NetUtil;
21
import com.electric.chargingpile.util.NetUtil;
37
    private RecyclerView recyclerView;
38
    private RecyclerView recyclerView;
38
39
39
    private int topicId;
40
    private int topicId;
40
    private String sort = "1";
41
    private int sort = 1;
41
    private int page = 1;
42
    private int page = 1;
42
    private TopicDetailAdapter topicDetailAdapter;
43
    private TopicDetailAdapter topicDetailAdapter;
43
    private StaggeredGridLayoutManager staggeredGridLayoutManager;
44
    private StaggeredGridLayoutManager staggeredGridLayoutManager;
64
        xRefreshView.setPullLoadEnable(true); // 允许加载更多
65
        xRefreshView.setPullLoadEnable(true); // 允许加载更多
65
        xRefreshView.setPinnedTime(1000);
66
        xRefreshView.setPinnedTime(1000);
66
        xRefreshView.setMoveForHorizontal(true);
67
        xRefreshView.setMoveForHorizontal(true);
67
        xRefreshView.setXRefreshViewListener(new XRefreshView.SimpleXRefreshListener(){
68
        xRefreshView.setXRefreshViewListener(new XRefreshView.SimpleXRefreshListener() {
68
            @Override
69
            @Override
69
            public void onRefresh(boolean isPullDown) {
70
            public void onRefresh(boolean isPullDown) {
70
                super.onRefresh(isPullDown);
71
                super.onRefresh(isPullDown);
75
            @Override
76
            @Override
76
            public void onLoadMore(boolean isSilence) {
77
            public void onLoadMore(boolean isSilence) {
77
                super.onLoadMore(isSilence);
78
                super.onLoadMore(isSilence);
78
                page ++;
79
                page++;
79
                requestData();
80
                requestData();
80
            }
81
            }
81
        });
82
        });
82
83
83
        staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
84
        staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
84
        staggeredGridLayoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE);
85
        staggeredGridLayoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE);
85
        topicDetailAdapter = new TopicDetailAdapter(getApplicationContext());
86
        topicDetailAdapter = new TopicDetailAdapter(getApplicationContext(), TopicDetailActivity.this);
86
87
87
        recyclerView = findViewById(R.id.recyclerView);
88
        recyclerView = findViewById(R.id.recyclerView);
88
        recyclerView.setHasFixedSize(true);
89
        recyclerView.setHasFixedSize(true);
100
101
101
        recyclerView.setLayoutManager(staggeredGridLayoutManager);
102
        recyclerView.setLayoutManager(staggeredGridLayoutManager);
102
        recyclerView.setAdapter(topicDetailAdapter);
103
        recyclerView.setAdapter(topicDetailAdapter);
103
//        topicDetailAdapter.setOn TODO by hyg 回调事件
104
        topicDetailAdapter.setOnRecyclerItemClickListener(new RecyclerItemTypeClickListener() {
105
            @Override
106
            public void onItemClickListener(int position, int index) {
107
                if (position == 0 && index == 1) { // 最新发布 最后回复 最热
108
                }
109
            }
110
        });
111
112
        topicDetailAdapter.setChooseTopicSortInterface(new TopicDetailAdapter.ChooseTopicSortInterface() {
113
            @Override
114
            public void chooseTopicSort(int s) {
115
                sort = s;
116
                page = 1;
117
                requestData();
118
            }
119
        });
104
    }
120
    }
105
121
106
    private void initListener() {
122
    private void initListener() {
129
        String url = MainApplication.urlNew + "/topic/homepage.do";
145
        String url = MainApplication.urlNew + "/topic/homepage.do";
130
        Map<String, String> map = new HashMap<>();
146
        Map<String, String> map = new HashMap<>();
131
        map.put("topicId", topicId + "");
147
        map.put("topicId", topicId + "");
132
        map.put("sort", sort);              //   1:最新发布 2:最后回复 3:最热
133
        map.put("init", "1");            //   0:只返回话题下内容列表 1:返回话题名等信息
148
        map.put("sort", sort + "");              //   1:最新发布 2:最后回复 3:最热
149
        map.put("init", "1");                   //   0:只返回话题下内容列表 1:返回话题名等信息
134
        map.put("page", page + "");
150
        map.put("page", page + "");
135
        map.put("limit", "20");
151
        map.put("limit", "20");
136
        CommonParams.addCommonParams(map);
152
        CommonParams.addCommonParams(map);
155
                String desc = JsonUtils.getKeyResult(res, "desc");
171
                String desc = JsonUtils.getKeyResult(res, "desc");
156
                if ("1000".equals(code)) {
172
                if ("1000".equals(code)) {
157
                    String data = JsonUtils.getKeyResult(res, "data");
173
                    String data = JsonUtils.getKeyResult(res, "data");
158
                    HomePageBean homePageBean = (HomePageBean)JsonUtils.parseToObjectBean(data, HomePageBean.class);
174
                    HomePageBean homePageBean = (HomePageBean) JsonUtils.parseToObjectBean(data, HomePageBean.class);
159
                    if (page == 1) {
175
                    if (page == 1) {
160
                        xRefreshView.stopRefresh();
176
                        xRefreshView.stopRefresh();
161
                        topicDetailAdapter.setHeaderData(homePageBean.topicVo);
177
                        topicDetailAdapter.setHeaderData(homePageBean.topicVo);

+ 78 - 6
app/src/main/java/com/electric/chargingpile/adapter/TopicDetailAdapter.java

1
package com.electric.chargingpile.adapter;
1
package com.electric.chargingpile.adapter;
2
2
3
import android.app.Activity;
3
import android.content.Context;
4
import android.content.Context;
4
import android.support.constraint.ConstraintLayout;
5
import android.support.constraint.ConstraintLayout;
5
import android.support.v7.widget.RecyclerView;
6
import android.support.v7.widget.RecyclerView;
6
import android.support.v7.widget.StaggeredGridLayoutManager;
7
import android.support.v7.widget.StaggeredGridLayoutManager;
7
import android.text.TextUtils;
8
import android.text.TextUtils;
8
import android.util.Log;
9
import android.view.LayoutInflater;
9
import android.view.LayoutInflater;
10
import android.view.View;
10
import android.view.View;
11
import android.view.ViewGroup;
11
import android.view.ViewGroup;
12
import android.widget.ArrayAdapter;
13
import android.widget.ImageView;
12
import android.widget.ImageView;
14
import android.widget.TextView;
13
import android.widget.TextView;
15
import android.widget.Toast;
14
import android.widget.Toast;
19
import com.electric.chargingpile.application.MainApplication;
18
import com.electric.chargingpile.application.MainApplication;
20
import com.electric.chargingpile.data.ChatRecommendBean;
19
import com.electric.chargingpile.data.ChatRecommendBean;
21
import com.electric.chargingpile.data.HomePageBean;
20
import com.electric.chargingpile.data.HomePageBean;
22
import com.electric.chargingpile.data.TalkRecommendBean;
23
import com.electric.chargingpile.data.TopicDetailBean;
24
import com.electric.chargingpile.data.TopicDetailBeanLab;
21
import com.electric.chargingpile.data.TopicDetailBeanLab;
22
import com.electric.chargingpile.iview.RecyclerItemTypeClickListener;
25
import com.electric.chargingpile.util.CircleTransform;
23
import com.electric.chargingpile.util.CircleTransform;
26
import com.electric.chargingpile.util.CommonParams;
24
import com.electric.chargingpile.util.CommonParams;
27
import com.electric.chargingpile.util.ImageDisplayUtils;
25
import com.electric.chargingpile.util.ImageDisplayUtils;
28
import com.electric.chargingpile.util.JsonUtils;
26
import com.electric.chargingpile.util.JsonUtils;
29
import com.electric.chargingpile.util.ToastUtil;
27
import com.electric.chargingpile.util.ToastUtil;
28
import com.electric.chargingpile.view.SortTopicPopWindow;
30
import com.squareup.picasso.Picasso;
29
import com.squareup.picasso.Picasso;
31
import com.zhy.http.okhttp.OkHttpUtils;
30
import com.zhy.http.okhttp.OkHttpUtils;
32
import com.zhy.http.okhttp.callback.StringCallback;
31
import com.zhy.http.okhttp.callback.StringCallback;
42
    private static final String TAG = "TopicDetailAdapter";
41
    private static final String TAG = "TopicDetailAdapter";
43
    public static final int TOPIC_DETAIL_HEADER = 1;
42
    public static final int TOPIC_DETAIL_HEADER = 1;
44
    public static final int TOPIC_DETAIL_CONTENT = 2;
43
    public static final int TOPIC_DETAIL_CONTENT = 2;
44
    private int sort = 1;
45
    private Context context;
45
    private Context context;
46
    private Activity activity;
46
    private LayoutInflater layoutInflater;
47
    private LayoutInflater layoutInflater;
47
    private final TopicDetailBeanLab beanLab;
48
    private final TopicDetailBeanLab beanLab;
48
    private HomePageBean.HomePageTopicBean topicDetailBean;
49
    private HomePageBean.HomePageTopicBean topicDetailBean;
50
    private RecyclerItemTypeClickListener onRecyclerItemClickListener;
51
    private ChooseTopicSortInterface chooseTopicSortInterface;
49
52
50
    public TopicDetailAdapter(Context context) {
53
    public TopicDetailAdapter(Context context, Activity activity) {
51
        this.context = context;
54
        this.context = context;
55
        this.activity = activity;
52
        this.layoutInflater = LayoutInflater.from(context);
56
        this.layoutInflater = LayoutInflater.from(context);
53
        beanLab = TopicDetailBeanLab.get(context);
57
        beanLab = TopicDetailBeanLab.get(context);
54
    }
58
    }
93
    }
97
    }
94
98
95
    private void bindHeaderViewHolder(IViewHolder viewHolder, int position) {
99
    private void bindHeaderViewHolder(IViewHolder viewHolder, int position) {
96
        HeaderViewHolder headerViewHolder = (HeaderViewHolder) viewHolder;
100
        final HeaderViewHolder headerViewHolder = (HeaderViewHolder) viewHolder;
97
        StaggeredGridLayoutManager.LayoutParams params = (StaggeredGridLayoutManager.LayoutParams) headerViewHolder.topicDetailHeader.getLayoutParams();
101
        StaggeredGridLayoutManager.LayoutParams params = (StaggeredGridLayoutManager.LayoutParams) headerViewHolder.topicDetailHeader.getLayoutParams();
98
        params.setFullSpan(true);
102
        params.setFullSpan(true);
99
        if (topicDetailBean == null) {
103
        if (topicDetailBean == null) {
107
        headerViewHolder.read.setText(read < 10000 ? read + "" : String.format("%.1fW", read / 10000.0));
111
        headerViewHolder.read.setText(read < 10000 ? read + "" : String.format("%.1fW", read / 10000.0));
108
        int join = topicDetailBean.joinNums;
112
        int join = topicDetailBean.joinNums;
109
        headerViewHolder.join.setText(join < 10000 ? join + "" : String.format("%.1fW", join / 10000.0));
113
        headerViewHolder.join.setText(join < 10000 ? join + "" : String.format("%.1fW", join / 10000.0));
114
115
        headerViewHolder.sortConstrainLayout.setOnClickListener(new View.OnClickListener() {
116
            @Override
117
            public void onClick(View view) {
118
                final SortTopicPopWindow sortPopWindow = new SortTopicPopWindow(activity);
119
                sortPopWindow.setUi(sort);
120
                sortPopWindow.showPopupWindow(headerViewHolder.sortConstrainLayout, new View.OnClickListener() {
121
                    @Override
122
                    public void onClick(View v) {
123
                        switch (v.getId()) {
124
                            case R.id.tv_1:
125
                                sort = 1;
126
                                sortPopWindow.dismiss();
127
                                headerViewHolder.sortTextView.setText("最新发布");
128
                                headerViewHolder.chooseTopicSort(sort);
129
//                                page = 1;
130
//                                requestData();
131
                                break;
132
                            case R.id.tv_2:
133
                                sort = 2;
134
                                sortPopWindow.dismiss();
135
                                headerViewHolder.sortTextView.setText("最后回复");
136
                                headerViewHolder.chooseTopicSort(sort);
137
//                                page = 1;
138
//                                requestData();
139
                                break;
140
                            case R.id.tv_3:
141
                                sort = 3;
142
                                sortPopWindow.dismiss();
143
                                headerViewHolder.sortTextView.setText("最热");
144
                                headerViewHolder.chooseTopicSort(sort);
145
//                                page = 1;
146
//                                requestData();
147
                                break;
148
                        }
149
                    }
150
                });
151
            }
152
        });
110
    }
153
    }
111
154
112
    private void bindContentViewHolder(IViewHolder viewHolder, final int position) {
155
    private void bindContentViewHolder(IViewHolder viewHolder, final int position) {
235
        TextView read;
278
        TextView read;
236
        TextView join;
279
        TextView join;
237
280
281
        ConstraintLayout sortConstrainLayout;
282
        TextView sortTextView;
283
        ImageView sortCursor;
284
285
238
        public HeaderViewHolder(View itemView) {
286
        public HeaderViewHolder(View itemView) {
239
            super(itemView);
287
            super(itemView);
240
            topicDetailHeader = itemView.findViewById(R.id.topicDetailHeader);
288
            topicDetailHeader = itemView.findViewById(R.id.topicDetailHeader);
243
            desc = itemView.findViewById(R.id.desc);
291
            desc = itemView.findViewById(R.id.desc);
244
            read = itemView.findViewById(R.id.read);
292
            read = itemView.findViewById(R.id.read);
245
            join = itemView.findViewById(R.id.join);
293
            join = itemView.findViewById(R.id.join);
294
295
            sortConstrainLayout = itemView.findViewById(R.id.sortConstrainLayout);
296
            sortTextView = itemView.findViewById(R.id.sortTextView);
297
            sortCursor = itemView.findViewById(R.id.sortCursor);
298
299
        }
300
301
        public void chooseTopicSort(int sort) {
302
            if (chooseTopicSortInterface != null) {
303
                chooseTopicSortInterface.chooseTopicSort(sort);
304
            }
246
        }
305
        }
247
306
248
    }
307
    }
287
346
288
        }
347
        }
289
    }
348
    }
349
350
    public void setOnRecyclerItemClickListener(RecyclerItemTypeClickListener onRecyclerItemClickListener) {
351
        this.onRecyclerItemClickListener = onRecyclerItemClickListener;
352
    }
353
354
    public interface ChooseTopicSortInterface {
355
        void chooseTopicSort(int sort);
356
    }
357
358
    public void setChooseTopicSortInterface(ChooseTopicSortInterface chooseTopicSortInterface) {
359
        this.chooseTopicSortInterface = chooseTopicSortInterface;
360
    }
361
290
}
362
}

+ 13 - 0
app/src/main/java/com/electric/chargingpile/view/SortTopicPopWindow.java

92
                }
92
                }
93
            }
93
            }
94
        });
94
        });
95
96
        tv3.setOnClickListener(new View.OnClickListener() {
97
            @Override
98
            public void onClick(View view) {
99
                try {
100
                    listener.onClick(view);
101
102
                } catch (Exception e) {
103
                    e.printStackTrace();
104
                }
105
            }
106
        });
107
95
        if (!this.isShowing()) {
108
        if (!this.isShowing()) {
96
            this.showAsDropDown(parent, parent.getLayoutParams().width / 2, -5);
109
            this.showAsDropDown(parent, parent.getLayoutParams().width / 2, -5);
97
110

+ 6 - 4
app/src/main/res/layout/activity_topic_detail_header.xml

102
            android:layout_height="wrap_content"
102
            android:layout_height="wrap_content"
103
            android:layout_marginStart="5dp"
103
            android:layout_marginStart="5dp"
104
            android:gravity="center_vertical"
104
            android:gravity="center_vertical"
105
            tools:text="32"
106
            android:textColor="#555555"
105
            android:textColor="#555555"
107
            android:textSize="12sp"
106
            android:textSize="12sp"
108
            app:layout_constraintBottom_toBottomOf="@+id/joinLabel"
107
            app:layout_constraintBottom_toBottomOf="@+id/joinLabel"
109
            app:layout_constraintStart_toEndOf="@+id/joinLabel"
108
            app:layout_constraintStart_toEndOf="@+id/joinLabel"
110
            app:layout_constraintTop_toTopOf="@+id/joinLabel" />
109
            app:layout_constraintTop_toTopOf="@+id/joinLabel"
110
            tools:text="32" />
111
    </android.support.constraint.ConstraintLayout>
111
    </android.support.constraint.ConstraintLayout>
112
112
113
    <android.support.constraint.ConstraintLayout
113
    <android.support.constraint.ConstraintLayout
120
        app:layout_constraintStart_toStartOf="parent">
120
        app:layout_constraintStart_toStartOf="parent">
121
121
122
        <android.support.constraint.ConstraintLayout
122
        <android.support.constraint.ConstraintLayout
123
            android:id="@+id/sortConstrainLayout"
123
            android:layout_width="wrap_content"
124
            android:layout_width="wrap_content"
124
            android:layout_height="0dp"
125
            android:layout_height="0dp"
125
            android:paddingLeft="15dp"
126
            android:paddingLeft="15dp"
143
144
144
            <ImageView
145
            <ImageView
145
                android:id="@+id/sortCursor"
146
                android:id="@+id/sortCursor"
146
                android:layout_width="wrap_content"
147
                android:layout_height="wrap_content"
147
                android:layout_width="16dp"
148
                android:layout_height="16dp"
149
                android:rotation="180"
148
                android:src="@drawable/app_topic_detaic_popup_icon"
150
                android:src="@drawable/app_topic_detaic_popup_icon"
149
                app:layout_constraintBottom_toBottomOf="parent"
151
                app:layout_constraintBottom_toBottomOf="parent"
150
                app:layout_constraintLeft_toRightOf="@+id/sortTextView"
152
                app:layout_constraintLeft_toRightOf="@+id/sortTextView"