Ver Código Fonte

主题排序修改完成

huyuguo 5 anos atrás
pai
commit
ef9c43dc05

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

@ -15,6 +15,7 @@ import com.electric.chargingpile.R;
15 15
import com.electric.chargingpile.adapter.TopicDetailAdapter;
16 16
import com.electric.chargingpile.application.MainApplication;
17 17
import com.electric.chargingpile.data.HomePageBean;
18
import com.electric.chargingpile.iview.RecyclerItemTypeClickListener;
18 19
import com.electric.chargingpile.util.CommonParams;
19 20
import com.electric.chargingpile.util.JsonUtils;
20 21
import com.electric.chargingpile.util.NetUtil;
@ -37,7 +38,7 @@ public class TopicDetailActivity extends AppCompatActivity implements View.OnCli
37 38
    private RecyclerView recyclerView;
38 39
39 40
    private int topicId;
40
    private String sort = "1";
41
    private int sort = 1;
41 42
    private int page = 1;
42 43
    private TopicDetailAdapter topicDetailAdapter;
43 44
    private StaggeredGridLayoutManager staggeredGridLayoutManager;
@ -64,7 +65,7 @@ public class TopicDetailActivity extends AppCompatActivity implements View.OnCli
64 65
        xRefreshView.setPullLoadEnable(true); // 允许加载更多
65 66
        xRefreshView.setPinnedTime(1000);
66 67
        xRefreshView.setMoveForHorizontal(true);
67
        xRefreshView.setXRefreshViewListener(new XRefreshView.SimpleXRefreshListener(){
68
        xRefreshView.setXRefreshViewListener(new XRefreshView.SimpleXRefreshListener() {
68 69
            @Override
69 70
            public void onRefresh(boolean isPullDown) {
70 71
                super.onRefresh(isPullDown);
@ -75,14 +76,14 @@ public class TopicDetailActivity extends AppCompatActivity implements View.OnCli
75 76
            @Override
76 77
            public void onLoadMore(boolean isSilence) {
77 78
                super.onLoadMore(isSilence);
78
                page ++;
79
                page++;
79 80
                requestData();
80 81
            }
81 82
        });
82 83
83 84
        staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
84 85
        staggeredGridLayoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE);
85
        topicDetailAdapter = new TopicDetailAdapter(getApplicationContext());
86
        topicDetailAdapter = new TopicDetailAdapter(getApplicationContext(), TopicDetailActivity.this);
86 87
87 88
        recyclerView = findViewById(R.id.recyclerView);
88 89
        recyclerView.setHasFixedSize(true);
@ -100,7 +101,22 @@ public class TopicDetailActivity extends AppCompatActivity implements View.OnCli
100 101
101 102
        recyclerView.setLayoutManager(staggeredGridLayoutManager);
102 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 122
    private void initListener() {
@ -129,8 +145,8 @@ public class TopicDetailActivity extends AppCompatActivity implements View.OnCli
129 145
        String url = MainApplication.urlNew + "/topic/homepage.do";
130 146
        Map<String, String> map = new HashMap<>();
131 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 150
        map.put("page", page + "");
135 151
        map.put("limit", "20");
136 152
        CommonParams.addCommonParams(map);
@ -155,7 +171,7 @@ public class TopicDetailActivity extends AppCompatActivity implements View.OnCli
155 171
                String desc = JsonUtils.getKeyResult(res, "desc");
156 172
                if ("1000".equals(code)) {
157 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 175
                    if (page == 1) {
160 176
                        xRefreshView.stopRefresh();
161 177
                        topicDetailAdapter.setHeaderData(homePageBean.topicVo);

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

@ -1,15 +1,14 @@
1 1
package com.electric.chargingpile.adapter;
2 2
3
import android.app.Activity;
3 4
import android.content.Context;
4 5
import android.support.constraint.ConstraintLayout;
5 6
import android.support.v7.widget.RecyclerView;
6 7
import android.support.v7.widget.StaggeredGridLayoutManager;
7 8
import android.text.TextUtils;
8
import android.util.Log;
9 9
import android.view.LayoutInflater;
10 10
import android.view.View;
11 11
import android.view.ViewGroup;
12
import android.widget.ArrayAdapter;
13 12
import android.widget.ImageView;
14 13
import android.widget.TextView;
15 14
import android.widget.Toast;
@ -19,14 +18,14 @@ import com.electric.chargingpile.R;
19 18
import com.electric.chargingpile.application.MainApplication;
20 19
import com.electric.chargingpile.data.ChatRecommendBean;
21 20
import com.electric.chargingpile.data.HomePageBean;
22
import com.electric.chargingpile.data.TalkRecommendBean;
23
import com.electric.chargingpile.data.TopicDetailBean;
24 21
import com.electric.chargingpile.data.TopicDetailBeanLab;
22
import com.electric.chargingpile.iview.RecyclerItemTypeClickListener;
25 23
import com.electric.chargingpile.util.CircleTransform;
26 24
import com.electric.chargingpile.util.CommonParams;
27 25
import com.electric.chargingpile.util.ImageDisplayUtils;
28 26
import com.electric.chargingpile.util.JsonUtils;
29 27
import com.electric.chargingpile.util.ToastUtil;
28
import com.electric.chargingpile.view.SortTopicPopWindow;
30 29
import com.squareup.picasso.Picasso;
31 30
import com.zhy.http.okhttp.OkHttpUtils;
32 31
import com.zhy.http.okhttp.callback.StringCallback;
@ -42,13 +41,18 @@ public class TopicDetailAdapter extends RecyclerView.Adapter<IViewHolder> {
42 41
    private static final String TAG = "TopicDetailAdapter";
43 42
    public static final int TOPIC_DETAIL_HEADER = 1;
44 43
    public static final int TOPIC_DETAIL_CONTENT = 2;
44
    private int sort = 1;
45 45
    private Context context;
46
    private Activity activity;
46 47
    private LayoutInflater layoutInflater;
47 48
    private final TopicDetailBeanLab beanLab;
48 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 54
        this.context = context;
55
        this.activity = activity;
52 56
        this.layoutInflater = LayoutInflater.from(context);
53 57
        beanLab = TopicDetailBeanLab.get(context);
54 58
    }
@ -93,7 +97,7 @@ public class TopicDetailAdapter extends RecyclerView.Adapter<IViewHolder> {
93 97
    }
94 98
95 99
    private void bindHeaderViewHolder(IViewHolder viewHolder, int position) {
96
        HeaderViewHolder headerViewHolder = (HeaderViewHolder) viewHolder;
100
        final HeaderViewHolder headerViewHolder = (HeaderViewHolder) viewHolder;
97 101
        StaggeredGridLayoutManager.LayoutParams params = (StaggeredGridLayoutManager.LayoutParams) headerViewHolder.topicDetailHeader.getLayoutParams();
98 102
        params.setFullSpan(true);
99 103
        if (topicDetailBean == null) {
@ -107,6 +111,45 @@ public class TopicDetailAdapter extends RecyclerView.Adapter<IViewHolder> {
107 111
        headerViewHolder.read.setText(read < 10000 ? read + "" : String.format("%.1fW", read / 10000.0));
108 112
        int join = topicDetailBean.joinNums;
109 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 155
    private void bindContentViewHolder(IViewHolder viewHolder, final int position) {
@ -235,6 +278,11 @@ public class TopicDetailAdapter extends RecyclerView.Adapter<IViewHolder> {
235 278
        TextView read;
236 279
        TextView join;
237 280
281
        ConstraintLayout sortConstrainLayout;
282
        TextView sortTextView;
283
        ImageView sortCursor;
284
285
238 286
        public HeaderViewHolder(View itemView) {
239 287
            super(itemView);
240 288
            topicDetailHeader = itemView.findViewById(R.id.topicDetailHeader);
@ -243,6 +291,17 @@ public class TopicDetailAdapter extends RecyclerView.Adapter<IViewHolder> {
243 291
            desc = itemView.findViewById(R.id.desc);
244 292
            read = itemView.findViewById(R.id.read);
245 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,4 +346,17 @@ public class TopicDetailAdapter extends RecyclerView.Adapter<IViewHolder> {
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,6 +92,19 @@ public class SortTopicPopWindow extends PopupWindow {
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 108
        if (!this.isShowing()) {
96 109
            this.showAsDropDown(parent, parent.getLayoutParams().width / 2, -5);
97 110

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

@ -102,12 +102,12 @@
102 102
            android:layout_height="wrap_content"
103 103
            android:layout_marginStart="5dp"
104 104
            android:gravity="center_vertical"
105
            tools:text="32"
106 105
            android:textColor="#555555"
107 106
            android:textSize="12sp"
108 107
            app:layout_constraintBottom_toBottomOf="@+id/joinLabel"
109 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 111
    </android.support.constraint.ConstraintLayout>
112 112
113 113
    <android.support.constraint.ConstraintLayout
@ -120,6 +120,7 @@
120 120
        app:layout_constraintStart_toStartOf="parent">
121 121
122 122
        <android.support.constraint.ConstraintLayout
123
            android:id="@+id/sortConstrainLayout"
123 124
            android:layout_width="wrap_content"
124 125
            android:layout_height="0dp"
125 126
            android:paddingLeft="15dp"
@ -143,8 +144,9 @@
143 144
144 145
            <ImageView
145 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 150
                android:src="@drawable/app_topic_detaic_popup_icon"
149 151
                app:layout_constraintBottom_toBottomOf="parent"
150 152
                app:layout_constraintLeft_toRightOf="@+id/sortTextView"