问答精选新增专题功能(完成)
This commit is contained in:
@ -51,16 +51,16 @@ public abstract class BaseFragment<T> extends Fragment implements OnRequestCallB
|
||||
protected final Handler mBaseHandler = new BaseFragment.BaseHandler(this);
|
||||
|
||||
protected static class BaseHandler extends Handler {
|
||||
private final WeakReference<BaseFragment> mfragmentWeakReference;
|
||||
private final WeakReference<BaseFragment> mFragmentWeakReference;
|
||||
|
||||
BaseHandler(BaseFragment fragment) {
|
||||
mfragmentWeakReference = new WeakReference<>(fragment);
|
||||
mFragmentWeakReference = new WeakReference<>(fragment);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMessage(Message msg) {
|
||||
super.handleMessage(msg);
|
||||
mfragmentWeakReference.get().handleMessage(msg);
|
||||
mFragmentWeakReference.get().handleMessage(msg);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -41,7 +41,6 @@ import com.gh.gamecenter.entity.InstallGameEntity;
|
||||
import com.gh.gamecenter.entity.SuggestionTypeEntity;
|
||||
import com.gh.gamecenter.entity.UserInfoEntity;
|
||||
import com.gh.gamecenter.manager.UserManager;
|
||||
import com.gh.gamecenter.retrofit.JSONObjectResponse;
|
||||
import com.gh.gamecenter.retrofit.Response;
|
||||
import com.gh.gamecenter.retrofit.RetrofitManager;
|
||||
import com.gh.gamecenter.suggest.SuggestPicAdapter;
|
||||
@ -49,6 +48,7 @@ import com.gh.gamecenter.suggest.SuggestSelectGameAdapter;
|
||||
import com.gh.gamecenter.suggest.SuggestTypeAdapter;
|
||||
import com.google.gson.Gson;
|
||||
import com.halo.assistant.HaloApp;
|
||||
import com.lightgame.config.CommonDebug;
|
||||
import com.lightgame.download.FileUtils;
|
||||
import com.lightgame.utils.Util_System_Keyboard;
|
||||
import com.lightgame.utils.Util_System_Phone_State;
|
||||
@ -74,6 +74,7 @@ import butterknife.BindView;
|
||||
import butterknife.OnClick;
|
||||
import okhttp3.MediaType;
|
||||
import okhttp3.RequestBody;
|
||||
import okhttp3.ResponseBody;
|
||||
import retrofit2.HttpException;
|
||||
import rx.Observable;
|
||||
import rx.Observer;
|
||||
@ -550,35 +551,29 @@ public class SuggestionActivity extends BaseActivity implements SuggestTypeAdapt
|
||||
RetrofitManager.getInstance(this).getApi().postSuggestion(body)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(new JSONObjectResponse() {
|
||||
.subscribe(new Response<ResponseBody>() {
|
||||
@Override
|
||||
public void onResponse(JSONObject response) {
|
||||
public void onResponse(ResponseBody response) {
|
||||
if (postDialog != null) {
|
||||
postDialog.dismissAllowingStateLoss();
|
||||
}
|
||||
if (response.length() != 0) {
|
||||
try {
|
||||
if ("ok".equals(response.getString("status"))) {
|
||||
|
||||
toast("感谢您的反馈!");
|
||||
setResult(SUGGEST_TYPE_REQUEST);
|
||||
finish();
|
||||
} else {
|
||||
toast("提交失败,请稍后尝试!");
|
||||
}
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
} else {
|
||||
toast("提交失败,请稍后尝试!");
|
||||
toast("感谢您的反馈!");
|
||||
setResult(SUGGEST_TYPE_REQUEST);
|
||||
finish();
|
||||
try {
|
||||
Utils.log("sendSuggestion::onResponse->" + response.string());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(HttpException e) {
|
||||
try {
|
||||
if (e != null) {
|
||||
if (CommonDebug.IS_DEBUG && e != null) {
|
||||
String string = e.response().errorBody().string();
|
||||
Utils.log("sendSuggestion::onFailure->" + string);
|
||||
}
|
||||
} catch (IOException e1) {
|
||||
e1.printStackTrace();
|
||||
|
||||
@ -114,7 +114,7 @@ public class AskFragment extends BaseFragment {
|
||||
|
||||
private void initViewPager() {
|
||||
ArrayList<Fragment> fragmentList = new ArrayList<>();
|
||||
fragmentList.add(new AskQuestionsHotFragment());
|
||||
fragmentList.add(new AskQuestionsRecommendsFragment());
|
||||
fragmentList.add(new AskQuestionsNewFragment());
|
||||
mAskViewpager.setAdapter(new FragmentAdapter(getChildFragmentManager(), fragmentList));
|
||||
mAskViewpager.setScrollable(false);
|
||||
|
||||
@ -1,82 +0,0 @@
|
||||
package com.gh.gamecenter.ask;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.gh.base.OnListClickListener;
|
||||
import com.gh.common.constant.ItemViewType;
|
||||
import com.gh.gamecenter.R;
|
||||
import com.gh.gamecenter.adapter.viewholder.FooterViewHolder;
|
||||
import com.gh.gamecenter.ask.entity.AnswerEntity;
|
||||
import com.gh.gamecenter.baselist.ListAdapter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by khy on 2/12/17.
|
||||
*/
|
||||
|
||||
public class AskQuestionsHotAdapter extends ListAdapter<AnswerEntity> {
|
||||
|
||||
private OnListClickListener mListClickListener;
|
||||
|
||||
public AskQuestionsHotAdapter(Context context, OnListClickListener listClickListener) {
|
||||
super(context);
|
||||
mListClickListener = listClickListener;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setListData(List<AnswerEntity> updateData) {
|
||||
// super.setListData(updateData); 用DiffUtil会出现诡异的动画
|
||||
mEntityList = new ArrayList<>(updateData);
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean areContentsTheSame(AnswerEntity oldItem, AnswerEntity newItem) {
|
||||
return oldItem.getId() != null && oldItem.getId().equals(newItem.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemViewType(int position) {
|
||||
if (position == getItemCount() - 1) return ItemViewType.ITEM_FOOTER;
|
||||
return ItemViewType.ITEM_BODY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
View view;
|
||||
switch (viewType) {
|
||||
case ItemViewType.ITEM_FOOTER:
|
||||
view = mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false);
|
||||
return new FooterViewHolder(view, mListClickListener);
|
||||
case ItemViewType.ITEM_BODY:
|
||||
view = mLayoutInflater.inflate(R.layout.ask_questions_hot_item, parent, false);
|
||||
return new AskQuestionsHotViewHolder(view, mListClickListener);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
|
||||
switch (getItemViewType(position)) {
|
||||
case ItemViewType.ITEM_BODY:
|
||||
((AskQuestionsHotViewHolder) holder).initQuestionsHotViewHolder(mEntityList.get(position));
|
||||
break;
|
||||
case ItemViewType.ITEM_FOOTER:
|
||||
FooterViewHolder footerViewHolder = (FooterViewHolder) holder;
|
||||
footerViewHolder.initItemPadding();
|
||||
footerViewHolder.initFooterViewHolder(mIsNetworkError, mIsOver, R.string.ask_loadover_hint);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return mEntityList == null || mEntityList.isEmpty() ? 0 : mEntityList.size() + FOOTER_ITEM_COUNT;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,151 @@
|
||||
package com.gh.gamecenter.ask;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v4.view.ViewPager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ProgressBar;
|
||||
|
||||
import com.gh.base.OnListClickListener;
|
||||
import com.gh.common.constant.ItemViewType;
|
||||
import com.gh.gamecenter.R;
|
||||
import com.gh.gamecenter.adapter.viewholder.FooterViewHolder;
|
||||
import com.gh.gamecenter.ask.entity.AnswerEntity;
|
||||
import com.gh.gamecenter.ask.entity.AskSubjectEntity;
|
||||
import com.gh.gamecenter.baselist.ListAdapter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by khy on 2/12/17.
|
||||
*/
|
||||
|
||||
public class AskQuestionsRecommendsAdapter extends ListAdapter<AnswerEntity> {
|
||||
|
||||
public static final int MAX_PROGRESS = 300;
|
||||
|
||||
private OnListClickListener mListClickListener;
|
||||
private OnSubjectProgressListener mProgressListener;
|
||||
|
||||
private List<AskSubjectEntity> mSubjectEntity;
|
||||
|
||||
private ProgressBar mSubjectProgressBar;
|
||||
private ViewPager mSubjectViewPager;
|
||||
|
||||
public AskQuestionsRecommendsAdapter(Context context, OnListClickListener listClickListener, OnSubjectProgressListener progressListener) {
|
||||
super(context);
|
||||
mProgressListener = progressListener;
|
||||
mListClickListener = listClickListener;
|
||||
}
|
||||
|
||||
public void setSubjectEntity(List<AskSubjectEntity> subjectEntity) {
|
||||
mSubjectEntity = subjectEntity;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setListData(List<AnswerEntity> updateData) {
|
||||
// super.setListData(updateData); 用DiffUtil会出现诡异的动画
|
||||
mEntityList = new ArrayList<>(updateData);
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean areContentsTheSame(AnswerEntity oldItem, AnswerEntity newItem) {
|
||||
return oldItem.getId() != null && oldItem.getId().equals(newItem.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemViewType(int position) {
|
||||
if (position == 0 && mSubjectEntity != null && mSubjectEntity.size() > 0)
|
||||
return ItemViewType.ITEM_TOP;
|
||||
if (position == getItemCount() - 1)
|
||||
return ItemViewType.ITEM_FOOTER;
|
||||
return ItemViewType.ITEM_BODY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
View view;
|
||||
switch (viewType) {
|
||||
case ItemViewType.ITEM_TOP:
|
||||
view = mLayoutInflater.inflate(R.layout.ask_recommends_subject, parent, false);
|
||||
return new AskSubjectViewHolder(view);
|
||||
case ItemViewType.ITEM_FOOTER:
|
||||
view = mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false);
|
||||
return new FooterViewHolder(view, mListClickListener);
|
||||
case ItemViewType.ITEM_BODY:
|
||||
view = mLayoutInflater.inflate(R.layout.ask_questions_hot_item, parent, false);
|
||||
return new AskQuestionsRecommendsViewHolder(view, mListClickListener);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
|
||||
switch (getItemViewType(position)) {
|
||||
case ItemViewType.ITEM_TOP:
|
||||
AskSubjectViewHolder subjectViewHolder = (AskSubjectViewHolder) holder;
|
||||
subjectViewHolder.mSubjectProgress.setMax(MAX_PROGRESS);
|
||||
mSubjectProgressBar = subjectViewHolder.mSubjectProgress;
|
||||
mSubjectViewPager = subjectViewHolder.mSubjectViewPager;
|
||||
if (subjectViewHolder.mSubjectViewPager.getAdapter() == null) {
|
||||
subjectViewHolder.mSubjectViewPager.setAdapter(new AskSubjectPageAdapter(mContext, mSubjectEntity));
|
||||
mProgressListener.onStartProgress();
|
||||
subjectViewHolder.mSubjectViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
||||
@Override
|
||||
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageSelected(int position) {
|
||||
mProgressListener.onStartProgress(); // 每次滑动完成重新启动进度条
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageScrollStateChanged(int state) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
break;
|
||||
case ItemViewType.ITEM_BODY:
|
||||
int index = mSubjectEntity == null ? position : position - TOP_ITEM_COUNT;
|
||||
((AskQuestionsRecommendsViewHolder) holder).initQuestionsHotViewHolder(mEntityList.get(index));
|
||||
break;
|
||||
case ItemViewType.ITEM_FOOTER:
|
||||
FooterViewHolder footerViewHolder = (FooterViewHolder) holder;
|
||||
footerViewHolder.initItemPadding();
|
||||
footerViewHolder.initFooterViewHolder(mIsNetworkError, mIsOver, R.string.ask_loadover_hint);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void setSubjectProgress(int progress) {
|
||||
if (mSubjectProgressBar != null) mSubjectProgressBar.setProgress(progress);
|
||||
if (progress == MAX_PROGRESS && mSubjectViewPager != null) {
|
||||
int currentItem = mSubjectViewPager.getCurrentItem();
|
||||
mSubjectViewPager.setCurrentItem(++currentItem, true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
int index = 0;
|
||||
if (mSubjectEntity != null && mSubjectEntity.size() > 0)
|
||||
index += TOP_ITEM_COUNT;
|
||||
if (mEntityList != null)
|
||||
index += mEntityList.size();
|
||||
if (mEntityList != null || mSubjectEntity != null && mSubjectEntity.size() > 0)
|
||||
index += FOOTER_ITEM_COUNT;
|
||||
return index;
|
||||
}
|
||||
|
||||
interface OnSubjectProgressListener {
|
||||
void onStartProgress();
|
||||
}
|
||||
}
|
||||
@ -3,6 +3,7 @@ package com.gh.gamecenter.ask;
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.Message;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.view.View;
|
||||
|
||||
@ -15,6 +16,7 @@ import com.gh.gamecenter.ask.entity.AnswerEntity;
|
||||
import com.gh.gamecenter.ask.entity.Questions;
|
||||
import com.gh.gamecenter.ask.questionsdetail.QuestionsDetailFragment;
|
||||
import com.gh.gamecenter.baselist.ListFragment;
|
||||
import com.gh.gamecenter.baselist.LoadStatus;
|
||||
import com.gh.gamecenter.baselist.LoadType;
|
||||
|
||||
import butterknife.BindView;
|
||||
@ -26,14 +28,34 @@ import static com.gh.gamecenter.ask.AskFragment.COMMUNITIES_SELECT_REQUEST;
|
||||
* Created by khy on 2/12/17.
|
||||
*/
|
||||
|
||||
public class AskQuestionsHotFragment extends ListFragment<AnswerEntity, AskQuestionsHotViewModel> {
|
||||
public class AskQuestionsRecommendsFragment extends ListFragment<AnswerEntity, AskQuestionsRecommendsViewModel>
|
||||
implements AskQuestionsRecommendsAdapter.OnSubjectProgressListener {
|
||||
|
||||
@BindView(R.id.reuse_nodata_skip_tv_btn)
|
||||
View mSkipHint;
|
||||
|
||||
private AskQuestionsHotAdapter mAdapter;
|
||||
public static final int VIEWPAGER_INTERVAL = 3000;
|
||||
|
||||
private AskQuestionsRecommendsAdapter mAdapter;
|
||||
|
||||
private CheckLoginUtils.OnLoginListener mOnLoginListener;
|
||||
|
||||
@Override
|
||||
protected void handleMessage(Message msg) {
|
||||
if (msg.what == 0) { // 验证码倒计时
|
||||
int arg1 = msg.arg1;
|
||||
arg1++;
|
||||
if (arg1 <= AskQuestionsRecommendsAdapter.MAX_PROGRESS) {
|
||||
if (mAdapter != null) mAdapter.setSubjectProgress(arg1);
|
||||
Message message = new Message();
|
||||
message.what = 0;
|
||||
message.arg1 = arg1;
|
||||
mBaseHandler.sendMessageDelayed(message
|
||||
, VIEWPAGER_INTERVAL / AskQuestionsRecommendsAdapter.MAX_PROGRESS);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@ -41,25 +63,51 @@ public class AskQuestionsHotFragment extends ListFragment<AnswerEntity, AskQuest
|
||||
NormalActivity.startFragment(getContext(), QuestionsEditFragment.class);
|
||||
};
|
||||
|
||||
mListViewModel.getLoadStatusLiveData().observe(this, status -> {
|
||||
if (status != null) {
|
||||
switch (status) {
|
||||
case REFRESH_FAILED:
|
||||
toast("刷新失败");
|
||||
mListViewModel.getRefreshCount().observe(this, integer -> {
|
||||
if (integer != null) {
|
||||
switch (integer) {
|
||||
case 0:
|
||||
toast("已经没有新内容咯,请稍后再试");
|
||||
break;
|
||||
case REFRESH_LOADED:
|
||||
case -1:
|
||||
toast("获取失败,请检查网络设置");
|
||||
break;
|
||||
case REFRESH_OVER:
|
||||
toast("刷新完毕");
|
||||
default:
|
||||
toast("成功获取" + integer + "条新内容");
|
||||
break;
|
||||
}
|
||||
if (mListRefresh.isRefreshing()) {
|
||||
mListRefresh.setRefreshing(false);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (mListRefresh.isRefreshing()) {
|
||||
mListRefresh.setRefreshing(false);
|
||||
}
|
||||
});
|
||||
|
||||
mListViewModel.getSubjectLiveData().observe(this, entityList -> {
|
||||
mAdapter.setSubjectEntity(entityList);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadEmpty() {
|
||||
if (mListViewModel.getSubjectLiveData().getValue() != null) {
|
||||
super.onLoadDone();
|
||||
mAdapter.loadChange(LoadStatus.LIST_OVER);
|
||||
} else {
|
||||
super.onLoadEmpty();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadError() {
|
||||
if (mListViewModel.getSubjectLiveData().getValue() != null) {
|
||||
super.onLoadDone();
|
||||
mAdapter.loadChange(LoadStatus.LIST_FAILED);
|
||||
} else {
|
||||
super.onLoadError();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
@ -78,8 +126,8 @@ public class AskQuestionsHotFragment extends ListFragment<AnswerEntity, AskQuest
|
||||
}
|
||||
}
|
||||
|
||||
protected AskQuestionsHotAdapter provideListAdapter() {
|
||||
return mAdapter == null ? mAdapter = new AskQuestionsHotAdapter(getContext(), this) : mAdapter;
|
||||
protected AskQuestionsRecommendsAdapter provideListAdapter() {
|
||||
return mAdapter == null ? mAdapter = new AskQuestionsRecommendsAdapter(getContext(), this, this) : mAdapter;
|
||||
}
|
||||
|
||||
@OnClick(R.id.reuse_nodata_skip_tv_btn)
|
||||
@ -127,4 +175,25 @@ public class AskQuestionsHotFragment extends ListFragment<AnswerEntity, AskQuest
|
||||
mListViewModel.load(LoadType.REFRESH);
|
||||
}, 500);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStartProgress() {
|
||||
mBaseHandler.removeMessages(0);
|
||||
Message message = new Message();
|
||||
message.what = 0;
|
||||
message.arg1 = 0;
|
||||
mBaseHandler.sendMessage(message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
onStartProgress();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
mBaseHandler.removeMessages(0);
|
||||
}
|
||||
}
|
||||
@ -20,7 +20,7 @@ import butterknife.BindView;
|
||||
* Created by khy on 4/12/17.
|
||||
*/
|
||||
|
||||
public class AskQuestionsHotViewHolder extends BaseRecyclerViewHolder<AnswerEntity> {
|
||||
public class AskQuestionsRecommendsViewHolder extends BaseRecyclerViewHolder<AnswerEntity> {
|
||||
|
||||
|
||||
@BindView(R.id.ask_item_usericon)
|
||||
@ -36,7 +36,7 @@ public class AskQuestionsHotViewHolder extends BaseRecyclerViewHolder<AnswerEnti
|
||||
@BindView(R.id.ask_item_votecount)
|
||||
TextView mAskVotecount;
|
||||
|
||||
public AskQuestionsHotViewHolder(View itemView,OnListClickListener listClickListener) {
|
||||
public AskQuestionsRecommendsViewHolder(View itemView, OnListClickListener listClickListener) {
|
||||
super(itemView, listClickListener);
|
||||
itemView.setOnClickListener(this);
|
||||
mAskTitle.setOnClickListener(this);
|
||||
@ -2,12 +2,14 @@ package com.gh.gamecenter.ask;
|
||||
|
||||
import android.app.Application;
|
||||
import android.arch.lifecycle.LiveData;
|
||||
import android.arch.lifecycle.MediatorLiveData;
|
||||
import android.arch.lifecycle.MutableLiveData;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.gh.common.util.UrlFilterUtils;
|
||||
import com.gh.gamecenter.ask.entity.AnswerEntity;
|
||||
import com.gh.gamecenter.ask.entity.AskSubjectEntity;
|
||||
import com.gh.gamecenter.baselist.ListViewModel;
|
||||
import com.gh.gamecenter.baselist.LoadStatus;
|
||||
import com.gh.gamecenter.baselist.LoadType;
|
||||
@ -27,26 +29,55 @@ import rx.schedulers.Schedulers;
|
||||
* Created by khy on 20/03/18.
|
||||
*/
|
||||
|
||||
public class AskQuestionsHotViewModel extends ListViewModel<AnswerEntity, AnswerEntity> {
|
||||
public class AskQuestionsRecommendsViewModel extends ListViewModel<AnswerEntity, AnswerEntity> {
|
||||
|
||||
/**
|
||||
* 等于 0 刷新结束(没有内容了)
|
||||
* 小于 0 刷新失败
|
||||
* 大于 0 刷新成功(数量)
|
||||
*/
|
||||
private MutableLiveData<Integer> mRefreshCount = new MutableLiveData<>();
|
||||
|
||||
private MutableLiveData<List<AnswerEntity>> mLiveData = new MutableLiveData<>();
|
||||
private MutableLiveData<List<AskSubjectEntity>> mSubjectLiveData = new MediatorLiveData<>();
|
||||
private MutableLiveData<LoadStatus> mLoadStatusLiveData = new MutableLiveData<>();
|
||||
|
||||
public AskQuestionsHotViewModel(@NonNull Application application) {
|
||||
public AskQuestionsRecommendsViewModel(@NonNull Application application) {
|
||||
super(application);
|
||||
loadData(false, null);
|
||||
loadAskSubjectColumn();
|
||||
}
|
||||
|
||||
void loadAskSubjectColumn() {
|
||||
RetrofitManager.getInstance(getApplication()).getApi()
|
||||
.getAskSubjectColumn(UserManager.getInstance().getCommunityId(getApplication()))
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(new Response<List<AskSubjectEntity>>() {
|
||||
@Override
|
||||
public void onResponse(List<AskSubjectEntity> response) {
|
||||
super.onResponse(response);
|
||||
mSubjectLiveData.postValue(response);
|
||||
loadData(false, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(HttpException e) {
|
||||
super.onFailure(e);
|
||||
loadData(false, null);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void loadData(boolean isUp, String sequenceId) {
|
||||
Observable<List<AnswerEntity>> askHot;
|
||||
String communityId = UserManager.getInstance().getCommunityId(getApplication());
|
||||
if (TextUtils.isEmpty(sequenceId)) {
|
||||
askHot = RetrofitManager.getInstance(getApplication()).getApi().getAskHot(communityId, "");
|
||||
askHot = RetrofitManager.getInstance(getApplication()).getApi().getAskRecommends(communityId, "");
|
||||
} else if (isUp) {
|
||||
askHot = RetrofitManager.getInstance(getApplication()).getApi().getAskHot(communityId,
|
||||
askHot = RetrofitManager.getInstance(getApplication()).getApi().getAskRecommends(communityId,
|
||||
UrlFilterUtils.getFilterQuery("action", "up", "sequence_id", sequenceId));
|
||||
} else {
|
||||
askHot = RetrofitManager.getInstance(getApplication()).getApi().getAskHot(communityId,
|
||||
askHot = RetrofitManager.getInstance(getApplication()).getApi().getAskRecommends(communityId,
|
||||
UrlFilterUtils.getFilterQuery("action", "down", "sequence_id", sequenceId));
|
||||
}
|
||||
|
||||
@ -89,13 +120,7 @@ public class AskQuestionsHotViewModel extends ListViewModel<AnswerEntity, Answer
|
||||
mLoadStatusLiveData.postValue(LoadStatus.INIT_LOADED);
|
||||
}
|
||||
} else if (isUp) {
|
||||
if (size == 0) {
|
||||
mLoadStatusLiveData.postValue(LoadStatus.REFRESH_OVER);
|
||||
} else if (size == -1) {
|
||||
mLoadStatusLiveData.postValue(LoadStatus.REFRESH_FAILED);
|
||||
} else {
|
||||
mLoadStatusLiveData.postValue(LoadStatus.REFRESH_LOADED);
|
||||
}
|
||||
mRefreshCount.postValue(size);
|
||||
} else {
|
||||
if (size == -1) {
|
||||
mLoadStatusLiveData.postValue(LoadStatus.LIST_FAILED);
|
||||
@ -132,8 +157,16 @@ public class AskQuestionsHotViewModel extends ListViewModel<AnswerEntity, Answer
|
||||
return mLoadStatusLiveData;
|
||||
}
|
||||
|
||||
public LiveData<Integer> getRefreshCount() {
|
||||
return mRefreshCount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Observable<List<T>> provideDataObservable(int page) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public MutableLiveData<List<AskSubjectEntity>> getSubjectLiveData() {
|
||||
return mSubjectLiveData;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,56 @@
|
||||
package com.gh.gamecenter.ask;
|
||||
|
||||
import android.content.Context;
|
||||
import android.databinding.DataBindingUtil;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.gh.gamecenter.NormalActivity;
|
||||
import com.gh.gamecenter.R;
|
||||
import com.gh.gamecenter.adapter.RecyclingPagerAdapter;
|
||||
import com.gh.gamecenter.ask.entity.AskSubjectEntity;
|
||||
import com.gh.gamecenter.ask.subject.AskSubjectFragment;
|
||||
import com.gh.gamecenter.databinding.AskRecommendsSubjectItemBinding;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by khy on 1/04/18.
|
||||
*/
|
||||
|
||||
public class AskSubjectPageAdapter extends RecyclingPagerAdapter {
|
||||
|
||||
private Context mContext;
|
||||
|
||||
private List<AskSubjectEntity> mEntityList;
|
||||
|
||||
public AskSubjectPageAdapter(Context context, List<AskSubjectEntity> entityList) {
|
||||
mContext = context;
|
||||
mEntityList = entityList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View getView(int position, View convertView, ViewGroup container) {
|
||||
AskRecommendsSubjectItemBinding binding;
|
||||
if (convertView != null) {
|
||||
binding = DataBindingUtil.bind(convertView);
|
||||
} else {
|
||||
binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.ask_recommends_subject_item, null, false);
|
||||
}
|
||||
AskSubjectEntity entity = mEntityList.get(position % mEntityList.size());
|
||||
binding.setEntity(entity);
|
||||
binding.getRoot().setOnClickListener(v -> {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putParcelable(AskSubjectEntity.TAG, entity);
|
||||
NormalActivity.startFragment(mContext, AskSubjectFragment.class, bundle);
|
||||
});
|
||||
return binding.getRoot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return Integer.MAX_VALUE;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
package com.gh.gamecenter.ask;
|
||||
|
||||
import android.support.v4.view.ViewPager;
|
||||
import android.view.View;
|
||||
import android.widget.ProgressBar;
|
||||
|
||||
import com.gh.base.BaseRecyclerViewHolder;
|
||||
import com.gh.gamecenter.R;
|
||||
import com.gh.gamecenter.ask.entity.AskSubjectEntity;
|
||||
|
||||
import butterknife.BindView;
|
||||
|
||||
/**
|
||||
* Created by khy on 1/04/18.
|
||||
*/
|
||||
|
||||
public class AskSubjectViewHolder extends BaseRecyclerViewHolder<AskSubjectEntity> {
|
||||
|
||||
@BindView(R.id.ask_recommends_subject_vp)
|
||||
ViewPager mSubjectViewPager;
|
||||
@BindView(R.id.ask_recommends_subject_pb)
|
||||
ProgressBar mSubjectProgress;
|
||||
|
||||
public AskSubjectViewHolder(View view) {
|
||||
super(view);
|
||||
}
|
||||
}
|
||||
@ -28,7 +28,6 @@ import com.gh.gamecenter.baselist.LoadType;
|
||||
import com.gh.gamecenter.db.info.InstallInfo;
|
||||
import com.gh.gamecenter.entity.InstallGameEntity;
|
||||
import com.gh.gamecenter.manager.UserManager;
|
||||
import com.gh.gamecenter.retrofit.JSONObjectResponse;
|
||||
import com.gh.gamecenter.retrofit.Response;
|
||||
import com.gh.gamecenter.retrofit.RetrofitManager;
|
||||
import com.halo.assistant.HaloApp;
|
||||
@ -205,23 +204,10 @@ public class SelectGameFragment extends ListFragment<AskGameSelectEntity, Select
|
||||
RetrofitManager.getInstance(getContext()).getApi().postSuggestion(body)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(new JSONObjectResponse() {
|
||||
.subscribe(new Response<ResponseBody>() {
|
||||
@Override
|
||||
public void onResponse(JSONObject response) {
|
||||
if (response == null) {
|
||||
toast("提交失败,请检查网络状态");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
if ("ok".equals(response.getString("status"))) {
|
||||
|
||||
toast("提交成功");
|
||||
} else {
|
||||
toast("提交失败,请稍后尝试!");
|
||||
}
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
public void onResponse(ResponseBody response) {
|
||||
toast("提交成功");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -0,0 +1,105 @@
|
||||
package com.gh.gamecenter.ask.entity;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by khy on 1/04/18.
|
||||
*/
|
||||
|
||||
public class AskSubjectEntity implements Parcelable {
|
||||
|
||||
public final static String TAG = "AskSubjectEntity";
|
||||
|
||||
@SerializedName("_id")
|
||||
private String id;
|
||||
|
||||
private String icon;
|
||||
|
||||
private String title;
|
||||
|
||||
private String description;
|
||||
|
||||
private List<String> tags;
|
||||
|
||||
public AskSubjectEntity() {
|
||||
}
|
||||
|
||||
protected AskSubjectEntity(Parcel in) {
|
||||
id = in.readString();
|
||||
icon = in.readString();
|
||||
title = in.readString();
|
||||
description = in.readString();
|
||||
tags = in.createStringArrayList();
|
||||
}
|
||||
|
||||
public static final Creator<AskSubjectEntity> CREATOR = new Creator<AskSubjectEntity>() {
|
||||
@Override
|
||||
public AskSubjectEntity createFromParcel(Parcel in) {
|
||||
return new AskSubjectEntity(in);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AskSubjectEntity[] newArray(int size) {
|
||||
return new AskSubjectEntity[size];
|
||||
}
|
||||
};
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getIcon() {
|
||||
return icon;
|
||||
}
|
||||
|
||||
public void setIcon(String icon) {
|
||||
this.icon = icon;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public void setTitle(String title) {
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public List<String> getTags() {
|
||||
return tags;
|
||||
}
|
||||
|
||||
public void setTags(List<String> tags) {
|
||||
this.tags = tags;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags) {
|
||||
dest.writeString(id);
|
||||
dest.writeString(icon);
|
||||
dest.writeString(title);
|
||||
dest.writeString(description);
|
||||
dest.writeStringList(tags);
|
||||
}
|
||||
}
|
||||
@ -41,7 +41,7 @@ class MyAnswerAdapter extends ListAdapter<AnswerEntity> {
|
||||
return new FooterViewHolder(view, null, mListClickListener);
|
||||
case ItemViewType.ITEM_BODY:
|
||||
view = mLayoutInflater.inflate(R.layout.ask_answer_item, parent, false);
|
||||
return new AnswerViewHolder(view, mEntityList, mListClickListener);
|
||||
return new AnswerViewHolder(view, mListClickListener);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -50,7 +50,7 @@ public class MyAnswerFragment extends ListFragment<AnswerEntity, NormalListViewM
|
||||
|
||||
@Override
|
||||
public void onListClick(View view, int position, Object data) {
|
||||
List<AnswerEntity> entityList;
|
||||
AnswerEntity entity;
|
||||
String tracers = mEntrance + "+(我的回答)";
|
||||
Bundle bundle;
|
||||
switch (view.getId()) {
|
||||
@ -60,8 +60,8 @@ public class MyAnswerFragment extends ListFragment<AnswerEntity, NormalListViewM
|
||||
}
|
||||
break;
|
||||
case R.id.ask_answer_item_title:
|
||||
entityList = (List<AnswerEntity>) data;
|
||||
Questions questions = entityList.get(position).getQuestions();
|
||||
entity = (AnswerEntity) data;
|
||||
Questions questions = entity.getQuestions();
|
||||
bundle = new Bundle();
|
||||
bundle.putString(EntranceUtils.KEY_QUESTIONS_ID, questions.getId());
|
||||
bundle.putString(EntranceUtils.KEY_ENTRANCE, tracers);
|
||||
@ -69,9 +69,9 @@ public class MyAnswerFragment extends ListFragment<AnswerEntity, NormalListViewM
|
||||
AskLogUtils.uploadQuestions(getContext(), tracers, questions);
|
||||
break;
|
||||
case R.id.ask_answer_item_constraintlayout:
|
||||
entityList = (List<AnswerEntity>) data;
|
||||
entity = (AnswerEntity) data;
|
||||
bundle = new Bundle();
|
||||
bundle.putString(EntranceUtils.KEY_ANSWER_ID, entityList.get(position).getId());
|
||||
bundle.putString(EntranceUtils.KEY_ANSWER_ID, entity.getId());
|
||||
bundle.putString(EntranceUtils.KEY_ENTRANCE, tracers);
|
||||
NormalActivity.startFragment(getContext(), AnswerDetailFragment.class, bundle);
|
||||
break;
|
||||
|
||||
@ -41,7 +41,7 @@ class MyDraftAdapter extends ListAdapter<AnswerEntity> {
|
||||
return new FooterViewHolder(view, null, mListClickListener);
|
||||
case ItemViewType.ITEM_BODY:
|
||||
view = mLayoutInflater.inflate(R.layout.ask_answer_item, parent, false);
|
||||
return new AnswerViewHolder(view, mEntityList, mListClickListener);
|
||||
return new AnswerViewHolder(view, mListClickListener);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -80,7 +80,7 @@ public class MyDraftFragment extends ListFragment<AnswerEntity, NormalListViewMo
|
||||
break;
|
||||
case R.id.ask_answer_item_constraintlayout:
|
||||
mDraftPosition = position;
|
||||
entity = ((List<AnswerEntity>) data).get(position);
|
||||
entity = (AnswerEntity) data;
|
||||
bundle = new Bundle();
|
||||
bundle.putString(EntranceUtils.KEY_QUESTIONS_TITLE, entity.getQuestions().getTitle());
|
||||
bundle.putString(EntranceUtils.KEY_ANSWER_CONTENT, entity.getBrief());
|
||||
@ -89,7 +89,7 @@ public class MyDraftFragment extends ListFragment<AnswerEntity, NormalListViewMo
|
||||
break;
|
||||
case R.id.ask_answer_item_title:
|
||||
String tracers = mEntrance + "+(我的草稿)";
|
||||
entity = ((List<AnswerEntity>) data).get(position);
|
||||
entity = (AnswerEntity) data;
|
||||
Questions questions = entity.getQuestions();
|
||||
bundle = new Bundle();
|
||||
bundle.putString(EntranceUtils.KEY_QUESTIONS_ID, questions.getId());
|
||||
|
||||
@ -41,7 +41,7 @@ public class AnswerFoldAdapter extends ListAdapter<AnswerEntity> {
|
||||
return new FooterViewHolder(view, null, mListClickListener);
|
||||
case ItemViewType.ITEM_BODY:
|
||||
view = mLayoutInflater.inflate(R.layout.ask_answer_item, parent, false);
|
||||
return new AnswerViewHolder(view, mEntityList, mListClickListener);
|
||||
return new AnswerViewHolder(view, mListClickListener);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -91,8 +91,7 @@ public class AnswerFoldFragment extends ListFragment<AnswerEntity, NormalListVie
|
||||
}
|
||||
break;
|
||||
case R.id.ask_answer_item_constraintlayout:
|
||||
List<AnswerEntity> entityList = (List<AnswerEntity>) data;
|
||||
AnswerEntity entity = entityList.get(position);
|
||||
AnswerEntity entity = (AnswerEntity) data;
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(EntranceUtils.KEY_ANSWER_ID, entity.getId());
|
||||
bundle.putString(EntranceUtils.KEY_ENTRANCE, mEntrance + "+(折叠回答)");
|
||||
|
||||
@ -22,7 +22,7 @@ import butterknife.BindView;
|
||||
* Created by khy on 19/12/17.
|
||||
*/
|
||||
|
||||
public class AnswerViewHolder extends BaseRecyclerViewHolder {
|
||||
public class AnswerViewHolder extends BaseRecyclerViewHolder<AnswerEntity> {
|
||||
|
||||
@BindView(R.id.ask_answer_item_usericon)
|
||||
SimpleDraweeView mUsericon;
|
||||
@ -39,13 +39,14 @@ public class AnswerViewHolder extends BaseRecyclerViewHolder {
|
||||
@BindView(R.id.ask_answer_item_community_name)
|
||||
TextView mCommunityName;
|
||||
|
||||
public AnswerViewHolder(View itemView, Object data, OnListClickListener listClickListener) {
|
||||
super(itemView, data, listClickListener);
|
||||
public AnswerViewHolder(View itemView, OnListClickListener listClickListener) {
|
||||
super(itemView, listClickListener);
|
||||
itemView.setOnClickListener(this);
|
||||
mQuestionTitle.setOnClickListener(this);
|
||||
}
|
||||
|
||||
public void initAnswerViewHolder(Context context, AnswerEntity entity) {
|
||||
setClickData(entity);
|
||||
mContent.setText(entity.getBrief());
|
||||
mVotecount.setText(context.getString(R.string.ask_vote_count, AskUtils.voteCountFormat(entity.getVote())));
|
||||
UserEntity user = entity.getUser();
|
||||
@ -61,6 +62,7 @@ public class AnswerViewHolder extends BaseRecyclerViewHolder {
|
||||
}
|
||||
|
||||
public void initCollectionAnswerViewHolder(AnswerEntity entity) {
|
||||
setClickData(entity);
|
||||
mQuestionTitle.setVisibility(View.VISIBLE);
|
||||
mQuestionTitle.setText(entity.getQuestions().getTitle());
|
||||
mContent.setText(entity.getBrief());
|
||||
@ -80,6 +82,7 @@ public class AnswerViewHolder extends BaseRecyclerViewHolder {
|
||||
}
|
||||
|
||||
public void initMyAnswerViewHolder(AnswerEntity entity) {
|
||||
setClickData(entity);
|
||||
mUsername.setVisibility(View.GONE);
|
||||
mUsericon.setVisibility(View.GONE);
|
||||
mQuestionTitle.setVisibility(View.VISIBLE);
|
||||
@ -98,6 +101,7 @@ public class AnswerViewHolder extends BaseRecyclerViewHolder {
|
||||
}
|
||||
|
||||
public void initMyDraftViewHolder(AnswerEntity entity) {
|
||||
setClickData(entity);
|
||||
mUsername.setVisibility(View.GONE);
|
||||
mUsericon.setVisibility(View.GONE);
|
||||
mQuestionTitle.setVisibility(View.VISIBLE);
|
||||
|
||||
@ -123,7 +123,7 @@ public class QuestionsDetailAdapter extends ListAdapter<AnswerEntity> {
|
||||
return new FooterViewHolder(view, null, mListClickListener);
|
||||
case ItemViewType.ITEM_BODY:
|
||||
view = mLayoutInflater.inflate(R.layout.ask_answer_item, parent, false);
|
||||
return new AnswerViewHolder(view, mEntityList, mListClickListener);
|
||||
return new AnswerViewHolder(view, mListClickListener);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -195,8 +195,8 @@ public class QuestionsDetailFragment extends ListFragment<AnswerEntity, NormalLi
|
||||
case R.id.ask_answer_item_img:
|
||||
case R.id.ask_answer_item_content:
|
||||
case R.id.ask_answer_item_title:
|
||||
List<AnswerEntity> entityList = (List<AnswerEntity>) data;
|
||||
AnswerEntity entity = entityList.get(position - ListAdapter.TOP_ITEM_COUNT);
|
||||
|
||||
AnswerEntity entity = (AnswerEntity) data;
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(EntranceUtils.KEY_ANSWER_ID, entity.getId());
|
||||
bundle.putString(EntranceUtils.KEY_ENTRANCE, mEntrance + "+(问题详情)");
|
||||
|
||||
@ -0,0 +1,103 @@
|
||||
package com.gh.gamecenter.ask.subject;
|
||||
|
||||
import android.content.Context;
|
||||
import android.databinding.DataBindingUtil;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.gh.base.OnListClickListener;
|
||||
import com.gh.common.constant.ItemViewType;
|
||||
import com.gh.gamecenter.R;
|
||||
import com.gh.gamecenter.adapter.viewholder.FooterViewHolder;
|
||||
import com.gh.gamecenter.ask.entity.AnswerEntity;
|
||||
import com.gh.gamecenter.ask.entity.AskSubjectEntity;
|
||||
import com.gh.gamecenter.ask.questionsdetail.AnswerViewHolder;
|
||||
import com.gh.gamecenter.baselist.ListAdapter;
|
||||
import com.gh.gamecenter.databinding.AskSubjectTopItemBinding;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by khy on 1/04/18.
|
||||
*/
|
||||
|
||||
public class AskSubjectAdapter extends ListAdapter<AnswerEntity> {
|
||||
|
||||
private OnListClickListener mListClickListener;
|
||||
|
||||
private AskSubjectEntity mSubjectEntity;
|
||||
|
||||
public AskSubjectAdapter(Context context, OnListClickListener listClickListener) {
|
||||
super(context);
|
||||
mListClickListener = listClickListener;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setListData(List<AnswerEntity> updateData) {
|
||||
int oldSize = mEntityList == null ? 0 : mEntityList.size() + TOP_ITEM_COUNT;
|
||||
mEntityList = new ArrayList<>(updateData);
|
||||
if (oldSize == 0 || oldSize > updateData.size()) {
|
||||
notifyDataSetChanged();
|
||||
} else {
|
||||
notifyItemRangeInserted(oldSize, updateData.size() - oldSize);
|
||||
}
|
||||
}
|
||||
|
||||
public void setSubjectEntity(AskSubjectEntity subjectEntity) {
|
||||
mSubjectEntity = subjectEntity;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
View view;
|
||||
switch (viewType) {
|
||||
case ItemViewType.ITEM_TOP:
|
||||
view = mLayoutInflater.inflate(R.layout.ask_subject_top_item, parent, false);
|
||||
AskSubjectTopItemBinding binding = DataBindingUtil.bind(view);
|
||||
return new AskSubjectViewHolder(binding, mListClickListener);
|
||||
case ItemViewType.ITEM_FOOTER:
|
||||
view = mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false);
|
||||
return new FooterViewHolder(view, mListClickListener);
|
||||
case ItemViewType.ITEM_BODY:
|
||||
view = mLayoutInflater.inflate(R.layout.ask_answer_item, parent, false);
|
||||
return new AnswerViewHolder(view, mListClickListener);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
|
||||
switch (getItemViewType(position)) {
|
||||
case ItemViewType.ITEM_TOP:
|
||||
AskSubjectViewHolder subjectViewHolder = (AskSubjectViewHolder) holder;
|
||||
subjectViewHolder.mBinding.setEntity(mSubjectEntity);
|
||||
break;
|
||||
case ItemViewType.ITEM_FOOTER:
|
||||
FooterViewHolder footerViewHolder = (FooterViewHolder) holder;
|
||||
footerViewHolder.initItemPadding();
|
||||
footerViewHolder.initFooterViewHolder(mIsNetworkError, mIsOver, R.string.ask_loadover_hint);
|
||||
break;
|
||||
case ItemViewType.ITEM_BODY:
|
||||
int index = position - ListAdapter.TOP_ITEM_COUNT;
|
||||
if (index != -1)
|
||||
((AnswerViewHolder) holder).initAnswerViewHolder(mContext, mEntityList.get(index));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemViewType(int position) {
|
||||
if (position == 0) return ItemViewType.ITEM_TOP;
|
||||
if (position == getItemCount() - 1) return ItemViewType.ITEM_FOOTER;
|
||||
return ItemViewType.ITEM_BODY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
if (mSubjectEntity == null) return 0;
|
||||
return mEntityList == null ? TOP_ITEM_COUNT + FOOTER_ITEM_COUNT : mEntityList.size() + FOOTER_ITEM_COUNT + TOP_ITEM_COUNT;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,96 @@
|
||||
package com.gh.gamecenter.ask.subject;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.View;
|
||||
|
||||
import com.gh.common.util.EntranceUtils;
|
||||
import com.gh.common.view.VerticalItemDecoration;
|
||||
import com.gh.gamecenter.NormalActivity;
|
||||
import com.gh.gamecenter.R;
|
||||
import com.gh.gamecenter.ask.AnswerDetailFragment;
|
||||
import com.gh.gamecenter.ask.entity.AnswerEntity;
|
||||
import com.gh.gamecenter.ask.entity.AskSubjectEntity;
|
||||
import com.gh.gamecenter.baselist.ListAdapter;
|
||||
import com.gh.gamecenter.baselist.ListFragment;
|
||||
import com.gh.gamecenter.baselist.LoadStatus;
|
||||
import com.gh.gamecenter.baselist.LoadType;
|
||||
|
||||
/**
|
||||
* Created by khy on 1/04/18.
|
||||
*/
|
||||
|
||||
public class AskSubjectFragment extends ListFragment<AnswerEntity, AskSubjectViewModel> {
|
||||
|
||||
private AskSubjectAdapter mAdapter;
|
||||
|
||||
@Override
|
||||
protected RecyclerView.ItemDecoration getItemDecoration() {
|
||||
return new VerticalItemDecoration(getContext(), 8, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isAutomaticLoad() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
setNavigationTitle("专题详情");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
Bundle arguments = getArguments();
|
||||
if (arguments != null) {
|
||||
AskSubjectEntity entity = arguments.getParcelable(AskSubjectEntity.TAG);
|
||||
mListViewModel.setSubjectLiveData(entity);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
mListViewModel.getSubjectLiveData().observe(this, subjectEntity -> mAdapter.setSubjectEntity(subjectEntity));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ListAdapter provideListAdapter() {
|
||||
return mAdapter == null ? mAdapter = new AskSubjectAdapter(getContext(), this) : mAdapter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadEmpty() {
|
||||
super.onLoadDone();
|
||||
mAdapter.loadChange(LoadStatus.LIST_OVER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadError() {
|
||||
super.onLoadDone();
|
||||
mAdapter.loadChange(LoadStatus.LIST_FAILED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onListClick(View view, int position, Object data) {
|
||||
switch (view.getId()) {
|
||||
case R.id.footerview_item:
|
||||
if (mAdapter.isNetworkError()) {
|
||||
mListViewModel.load(LoadType.RETRY);
|
||||
}
|
||||
break;
|
||||
case R.id.ask_answer_item_constraintlayout:
|
||||
AnswerEntity answerEntity = (AnswerEntity) data;
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(EntranceUtils.KEY_ANSWER_ID, answerEntity.getId());
|
||||
bundle.putString(EntranceUtils.KEY_ENTRANCE, "(社区专题)");
|
||||
NormalActivity.startFragment(getContext(), AnswerDetailFragment.class, bundle);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,20 @@
|
||||
package com.gh.gamecenter.ask.subject;
|
||||
|
||||
import com.gh.base.BaseRecyclerViewHolder;
|
||||
import com.gh.base.OnListClickListener;
|
||||
import com.gh.gamecenter.ask.entity.AskSubjectEntity;
|
||||
import com.gh.gamecenter.databinding.AskSubjectTopItemBinding;
|
||||
|
||||
/**
|
||||
* Created by khy on 1/04/18.
|
||||
*/
|
||||
|
||||
public class AskSubjectViewHolder extends BaseRecyclerViewHolder<AskSubjectEntity> {
|
||||
|
||||
AskSubjectTopItemBinding mBinding;
|
||||
|
||||
public AskSubjectViewHolder(AskSubjectTopItemBinding binding, OnListClickListener listClickListener) {
|
||||
super(binding.getRoot(), listClickListener);
|
||||
mBinding = binding;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,49 @@
|
||||
package com.gh.gamecenter.ask.subject;
|
||||
|
||||
import android.app.Application;
|
||||
import android.arch.lifecycle.MediatorLiveData;
|
||||
import android.arch.lifecycle.MutableLiveData;
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import com.gh.gamecenter.ask.entity.AnswerEntity;
|
||||
import com.gh.gamecenter.ask.entity.AskSubjectEntity;
|
||||
import com.gh.gamecenter.baselist.ListViewModel;
|
||||
import com.gh.gamecenter.baselist.LoadType;
|
||||
import com.gh.gamecenter.manager.UserManager;
|
||||
import com.gh.gamecenter.retrofit.RetrofitManager;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import rx.Observable;
|
||||
|
||||
/**
|
||||
* Created by khy on 1/04/18.
|
||||
*/
|
||||
|
||||
public class AskSubjectViewModel extends ListViewModel<AnswerEntity, AnswerEntity> {
|
||||
MutableLiveData<AskSubjectEntity> mSubjectLiveData = new MediatorLiveData<>();
|
||||
|
||||
public AskSubjectViewModel(@NonNull Application application) {
|
||||
super(application);
|
||||
mResultLiveData.addSource(mListLiveData, mResultLiveData::postValue);
|
||||
mResultLiveData.addSource(mSubjectLiveData, askSubjectEntity -> {
|
||||
mResultLiveData.removeSource(mSubjectLiveData);
|
||||
load(LoadType.NORMAL);
|
||||
});
|
||||
}
|
||||
|
||||
public MutableLiveData<AskSubjectEntity> getSubjectLiveData() {
|
||||
return mSubjectLiveData;
|
||||
}
|
||||
|
||||
public void setSubjectLiveData(AskSubjectEntity subjectLiveData) {
|
||||
if (subjectLiveData != null) mSubjectLiveData.postValue(subjectLiveData);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<List<AnswerEntity>> provideDataObservable(int page) {
|
||||
if (mSubjectLiveData.getValue() == null) return null;
|
||||
return RetrofitManager.getInstance(getApplication()).getApi()
|
||||
.getAskSubjectColumnAnswers(UserManager.getInstance().getCommunityId(getApplication()), mSubjectLiveData.getValue().getId());
|
||||
}
|
||||
}
|
||||
@ -22,9 +22,4 @@ public enum LoadStatus {
|
||||
LIST_LOADED,
|
||||
LIST_FAILED,
|
||||
LIST_OVER,
|
||||
|
||||
// 推荐数据流相关
|
||||
REFRESH_FAILED,
|
||||
REFRESH_OVER,
|
||||
REFRESH_LOADED
|
||||
}
|
||||
@ -41,7 +41,7 @@ public class AnswerAdapter extends ListAdapter<AnswerEntity> {
|
||||
return new FooterViewHolder(view, null, mListClickListener);
|
||||
case ItemViewType.ITEM_BODY:
|
||||
view = mLayoutInflater.inflate(R.layout.ask_answer_item, parent, false);
|
||||
return new AnswerViewHolder(view, mEntityList, mListClickListener);
|
||||
return new AnswerViewHolder(view, mListClickListener);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -42,7 +42,7 @@ public class AnswerFragment extends ListFragment<AnswerEntity, NormalListViewMod
|
||||
|
||||
@Override
|
||||
public void onListClick(View view, int position, Object data) {
|
||||
List<AnswerEntity> entityList;
|
||||
AnswerEntity entity;
|
||||
String tracers;
|
||||
switch (view.getId()) {
|
||||
case R.id.footerview_item:
|
||||
@ -51,8 +51,7 @@ public class AnswerFragment extends ListFragment<AnswerEntity, NormalListViewMod
|
||||
}
|
||||
break;
|
||||
case R.id.ask_answer_item_content:
|
||||
entityList = (List<AnswerEntity>) data;
|
||||
AnswerEntity entity = entityList.get(position);
|
||||
entity = (AnswerEntity) data;
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(EntranceUtils.KEY_ANSWER_ID, entity.getId());
|
||||
bundle.putString(EntranceUtils.KEY_ENTRANCE, mEntrance + "+(回答)");
|
||||
@ -60,8 +59,8 @@ public class AnswerFragment extends ListFragment<AnswerEntity, NormalListViewMod
|
||||
break;
|
||||
case R.id.ask_answer_item_title:
|
||||
tracers = mEntrance + "+(回答)";
|
||||
entityList = (List<AnswerEntity>) data;
|
||||
Questions questions = entityList.get(position).getQuestions();
|
||||
entity = (AnswerEntity) data;
|
||||
Questions questions = entity.getQuestions();
|
||||
|
||||
bundle = new Bundle();
|
||||
bundle.putString(EntranceUtils.KEY_QUESTIONS_ID, questions.getId());
|
||||
@ -71,9 +70,9 @@ public class AnswerFragment extends ListFragment<AnswerEntity, NormalListViewMod
|
||||
break;
|
||||
case R.id.ask_answer_item_constraintlayout:
|
||||
tracers = mEntrance + "+(回答)";
|
||||
entityList = (List<AnswerEntity>) data;
|
||||
entity = (AnswerEntity) data;
|
||||
bundle = new Bundle();
|
||||
bundle.putString(EntranceUtils.KEY_ANSWER_ID, entityList.get(position).getId());
|
||||
bundle.putString(EntranceUtils.KEY_ANSWER_ID, entity.getId());
|
||||
bundle.putString(EntranceUtils.KEY_ENTRANCE, tracers);
|
||||
NormalActivity.startFragment(getContext(), AnswerDetailFragment.class, bundle);
|
||||
break;
|
||||
|
||||
@ -6,7 +6,6 @@ import android.arch.lifecycle.ViewModelProviders;
|
||||
import android.content.Intent;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
@ -63,28 +62,25 @@ public class LoginFragment extends NormalFragment implements LoginUtils.onCaptch
|
||||
|
||||
private String mServiceId;
|
||||
|
||||
Handler mHandler = new Handler() {
|
||||
@Override
|
||||
public void handleMessage(Message msg) {
|
||||
super.handleMessage(msg);
|
||||
if (msg.what == 0) { // 验证码倒计时
|
||||
int arg1 = msg.arg1;
|
||||
arg1--;
|
||||
if (arg1 >= 0) {
|
||||
Message message = new Message();
|
||||
message.what = 0;
|
||||
message.arg1 = arg1;
|
||||
mHandler.sendMessageDelayed(message, 1000);
|
||||
mLoginCaptcha.setText(arg1 + "s");
|
||||
} else {
|
||||
mLoginCaptcha.setText("重新获取");
|
||||
mLoginCaptcha.setTextColor(ContextCompat.getColor(getContext(), R.color.title));
|
||||
mLoginCaptcha.setBackgroundResource(R.drawable.border_black_bg);
|
||||
mLoginCaptcha.setEnabled(true);
|
||||
}
|
||||
@Override
|
||||
protected void handleMessage(Message msg) {
|
||||
if (msg.what == 0) { // 验证码倒计时
|
||||
int arg1 = msg.arg1;
|
||||
arg1--;
|
||||
if (arg1 >= 0) {
|
||||
Message message = new Message();
|
||||
message.what = 0;
|
||||
message.arg1 = arg1;
|
||||
mBaseHandler.sendMessageDelayed(message, 1000);
|
||||
mLoginCaptcha.setText(arg1 + "s");
|
||||
} else {
|
||||
mLoginCaptcha.setText("重新获取");
|
||||
mLoginCaptcha.setTextColor(ContextCompat.getColor(getContext(), R.color.title));
|
||||
mLoginCaptcha.setBackgroundResource(R.drawable.border_black_bg);
|
||||
mLoginCaptcha.setEnabled(true);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
@ -186,7 +182,7 @@ public class LoginFragment extends NormalFragment implements LoginUtils.onCaptch
|
||||
Message message = new Message();
|
||||
message.what = 0;
|
||||
message.arg1 = 60; // 倒数时间
|
||||
mHandler.sendMessage(message);
|
||||
mBaseHandler.sendMessage(message);
|
||||
mLoginCaptcha.setTextColor(ContextCompat.getColor(getContext(), R.color.hint));
|
||||
mLoginCaptcha.setBackgroundResource(R.drawable.border_captcha_bg);
|
||||
mLoginCaptcha.setEnabled(false);
|
||||
@ -213,7 +209,7 @@ public class LoginFragment extends NormalFragment implements LoginUtils.onCaptch
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
mHandler.removeCallbacksAndMessages(null);
|
||||
mBaseHandler.removeCallbacksAndMessages(null);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -9,6 +9,7 @@ import android.view.View;
|
||||
import com.gh.common.util.AskLogUtils;
|
||||
import com.gh.common.util.EntranceUtils;
|
||||
import com.gh.gamecenter.CommentDetailActivity;
|
||||
import com.gh.gamecenter.MessageDetailActivity;
|
||||
import com.gh.gamecenter.NewsDetailActivity;
|
||||
import com.gh.gamecenter.NormalActivity;
|
||||
import com.gh.gamecenter.R;
|
||||
@ -96,19 +97,20 @@ public class MessageNormalFragment extends ListFragment<MessageEntity, NormalLis
|
||||
switch (entity.getType()) {
|
||||
case "comment_vote":
|
||||
if (view.getId() == R.id.message_original) {
|
||||
Intent intent = NewsDetailActivity.getIntentById(getContext(), entity.getArticle().getId(), "消息中心-消息");
|
||||
Intent intent = NewsDetailActivity.getIntentById(getContext(), entity.getArticle().getId(), tracers);
|
||||
startActivity(intent);
|
||||
} else if (view.getId() == R.id.message_item) {
|
||||
Intent intent = CommentDetailActivity.getIntent(getContext(), entity.getDialogue().getTo().getId());
|
||||
Intent intent = MessageDetailActivity.getIntentById(getContext(),
|
||||
entity.getArticle().getId(), -1, false, tracers);
|
||||
startActivity(intent);
|
||||
}
|
||||
break;
|
||||
case "reply":
|
||||
if (view.getId() == R.id.message_original) {
|
||||
Intent intent = NewsDetailActivity.getIntentById(getContext(), entity.getArticle().getId(), "消息中心-消息");
|
||||
Intent intent = NewsDetailActivity.getIntentById(getContext(), entity.getArticle().getId(), tracers);
|
||||
startActivity(intent);
|
||||
} else if (view.getId() == R.id.message_item) {
|
||||
Intent intent = CommentDetailActivity.getIntent(getContext(), entity.getDialogue().getTo().getId());
|
||||
Intent intent = CommentDetailActivity.getIntent(getContext(), entity.getDialogue().getFrom().getId());
|
||||
startActivity(intent);
|
||||
}
|
||||
break;
|
||||
@ -153,7 +155,19 @@ public class MessageNormalFragment extends ListFragment<MessageEntity, NormalLis
|
||||
bundle.putString(EntranceUtils.KEY_ENTRANCE, tracers);
|
||||
NormalActivity.startFragment(getContext(), AnswerDetailFragment.class, bundle);
|
||||
}
|
||||
break;
|
||||
case "reply_answer_comment":
|
||||
if (view.getId() == R.id.message_original) {
|
||||
bundle = new Bundle();
|
||||
bundle.putString(EntranceUtils.KEY_ANSWER_ID, entity.getAnswer().getId());
|
||||
bundle.putString(EntranceUtils.KEY_ENTRANCE, tracers);
|
||||
NormalActivity.startFragment(getContext(), AnswerDetailFragment.class, bundle);
|
||||
} else if (view.getId() == R.id.message_item) {
|
||||
Intent intent = CommentDetailActivity.getAnswerCommentIntent(getContext(), entity.getDialogue().getFrom().getId(), entity.getAnswer().getId());
|
||||
startActivity(intent);
|
||||
}
|
||||
break;
|
||||
case "answer_comment_vote":
|
||||
case "answer_comment":
|
||||
if (view.getId() == R.id.message_original) {
|
||||
bundle = new Bundle();
|
||||
@ -168,18 +182,7 @@ public class MessageNormalFragment extends ListFragment<MessageEntity, NormalLis
|
||||
NormalActivity.startFragment(getContext(), AnswerDetailFragment.class, bundle); // 打开评论管理
|
||||
}
|
||||
break;
|
||||
case "answer_comment_vote":
|
||||
if (view.getId() == R.id.message_original) {
|
||||
bundle = new Bundle();
|
||||
bundle.putString(EntranceUtils.KEY_ANSWER_ID, entity.getAnswer().getId());
|
||||
bundle.putString(EntranceUtils.KEY_ENTRANCE, tracers);
|
||||
NormalActivity.startFragment(getContext(), AnswerDetailFragment.class, bundle);
|
||||
} else if (view.getId() == R.id.message_item) {
|
||||
Intent intent = CommentDetailActivity.getAnswerCommentIntent(getContext(), entity.getDialogue().getFrom().getId(), entity.getComment().getId());
|
||||
startActivity(intent);
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -9,6 +9,7 @@ import android.view.View;
|
||||
import com.gh.common.util.AskLogUtils;
|
||||
import com.gh.common.util.EntranceUtils;
|
||||
import com.gh.gamecenter.CommentDetailActivity;
|
||||
import com.gh.gamecenter.MessageDetailActivity;
|
||||
import com.gh.gamecenter.NewsDetailActivity;
|
||||
import com.gh.gamecenter.NormalActivity;
|
||||
import com.gh.gamecenter.R;
|
||||
@ -86,19 +87,20 @@ public class NewMessageFragment extends ListFragment<MessageEntity, NormalListVi
|
||||
switch (entity.getType()) {
|
||||
case "comment_vote":
|
||||
if (view.getId() == R.id.message_original) {
|
||||
Intent intent = NewsDetailActivity.getIntentById(getContext(), entity.getArticle().getId(), "消息中心-消息");
|
||||
Intent intent = NewsDetailActivity.getIntentById(getContext(), entity.getArticle().getId(), tracers);
|
||||
startActivity(intent);
|
||||
} else if (view.getId() == R.id.message_item) {
|
||||
Intent intent = CommentDetailActivity.getIntent(getContext(), entity.getDialogue().getTo().getId());
|
||||
Intent intent = MessageDetailActivity.getIntentById(getContext(),
|
||||
entity.getArticle().getId(), -1, false, tracers);
|
||||
startActivity(intent);
|
||||
}
|
||||
break;
|
||||
case "reply":
|
||||
if (view.getId() == R.id.message_original) {
|
||||
Intent intent = NewsDetailActivity.getIntentById(getContext(), entity.getArticle().getId(), "消息中心-消息");
|
||||
Intent intent = NewsDetailActivity.getIntentById(getContext(), entity.getArticle().getId(), tracers);
|
||||
startActivity(intent);
|
||||
} else if (view.getId() == R.id.message_item) {
|
||||
Intent intent = CommentDetailActivity.getIntent(getContext(), entity.getDialogue().getTo().getId());
|
||||
Intent intent = CommentDetailActivity.getIntent(getContext(), entity.getDialogue().getFrom().getId());
|
||||
startActivity(intent);
|
||||
}
|
||||
break;
|
||||
@ -143,7 +145,19 @@ public class NewMessageFragment extends ListFragment<MessageEntity, NormalListVi
|
||||
bundle.putString(EntranceUtils.KEY_ENTRANCE, tracers);
|
||||
NormalActivity.startFragment(getContext(), AnswerDetailFragment.class, bundle);
|
||||
}
|
||||
break;
|
||||
case "reply_answer_comment":
|
||||
if (view.getId() == R.id.message_original) {
|
||||
bundle = new Bundle();
|
||||
bundle.putString(EntranceUtils.KEY_ANSWER_ID, entity.getAnswer().getId());
|
||||
bundle.putString(EntranceUtils.KEY_ENTRANCE, tracers);
|
||||
NormalActivity.startFragment(getContext(), AnswerDetailFragment.class, bundle);
|
||||
} else if (view.getId() == R.id.message_item) {
|
||||
Intent intent = CommentDetailActivity.getAnswerCommentIntent(getContext(), entity.getDialogue().getFrom().getId(), entity.getAnswer().getId());
|
||||
startActivity(intent);
|
||||
}
|
||||
break;
|
||||
case "answer_comment_vote":
|
||||
case "answer_comment":
|
||||
if (view.getId() == R.id.message_original) {
|
||||
bundle = new Bundle();
|
||||
@ -158,18 +172,6 @@ public class NewMessageFragment extends ListFragment<MessageEntity, NormalListVi
|
||||
NormalActivity.startFragment(getContext(), AnswerDetailFragment.class, bundle); // 打开评论管理
|
||||
}
|
||||
break;
|
||||
case "answer_comment_vote":
|
||||
if (view.getId() == R.id.message_original) {
|
||||
bundle = new Bundle();
|
||||
bundle.putString(EntranceUtils.KEY_ANSWER_ID, entity.getAnswer().getId());
|
||||
bundle.putString(EntranceUtils.KEY_ENTRANCE, tracers);
|
||||
NormalActivity.startFragment(getContext(), AnswerDetailFragment.class, bundle);
|
||||
} else if (view.getId() == R.id.message_item) {
|
||||
Intent intent = CommentDetailActivity.getAnswerCommentIntent(getContext(), entity.getDialogue().getFrom().getId(), entity.getComment().getId());
|
||||
startActivity(intent);
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -42,7 +42,7 @@ public class NewMessageItemViewHolder extends BaseRecyclerViewHolder<MessageEnti
|
||||
case "reply":
|
||||
mBinding.messageCommand.setText("回复了我");
|
||||
mBinding.messageContent.setVisibility(View.VISIBLE);
|
||||
mBinding.messageContent.setText(messageEntity.getComment().getContent());
|
||||
mBinding.messageContent.setText(messageEntity.getDialogue().getTo().getContent());
|
||||
mBinding.messageOriginalTitle.setText(messageEntity.getArticle().getTitle());
|
||||
mBinding.messageOriginalIcon.setImageURI(messageEntity.getArticle().getThumb());
|
||||
break;
|
||||
|
||||
@ -4,6 +4,7 @@ import com.gh.gamecenter.ask.entity.AnswerDetailEntity;
|
||||
import com.gh.gamecenter.ask.entity.AnswerEntity;
|
||||
import com.gh.gamecenter.ask.entity.AskGameSelectEntity;
|
||||
import com.gh.gamecenter.ask.entity.AskSearchEntity;
|
||||
import com.gh.gamecenter.ask.entity.AskSubjectEntity;
|
||||
import com.gh.gamecenter.ask.entity.AskTagGroupsEntity;
|
||||
import com.gh.gamecenter.ask.entity.InviteEntity;
|
||||
import com.gh.gamecenter.ask.entity.Questions;
|
||||
@ -695,7 +696,7 @@ public interface ApiService {
|
||||
* 获取社区首页精选
|
||||
*/
|
||||
@GET("communities/{community_id}/recommends")
|
||||
Observable<List<AnswerEntity>> getAskHot(@Path("community_id") String communityId, @Query("filter") String filter);
|
||||
Observable<List<AnswerEntity>> getAskRecommends(@Path("community_id") String communityId, @Query("filter") String filter);
|
||||
|
||||
/**
|
||||
* 获取社区首页-问题列表
|
||||
@ -893,6 +894,18 @@ public interface ApiService {
|
||||
@GET("users/{user_id}/favorites/answers")
|
||||
Observable<List<AnswerEntity>> getCollectionAnswer(@Path("user_id") String user_id, @Query("page") int page);
|
||||
|
||||
/**
|
||||
* 专题数据
|
||||
*/
|
||||
@GET("communities/{community_id}/columns")
|
||||
Observable<List<AskSubjectEntity>> getAskSubjectColumn(@Path("community_id") String communityId);
|
||||
|
||||
/**
|
||||
* 社区专题的答案
|
||||
*/
|
||||
@GET("communities/{community_id}/columns/{column_id}/answers")
|
||||
Observable<List<AnswerEntity>> getAskSubjectColumnAnswers(@Path("community_id") String communityId, @Path("column_id") String columnId);
|
||||
|
||||
// /**
|
||||
// * 获取默认社区
|
||||
// */
|
||||
|
||||
Reference in New Issue
Block a user