diff --git a/app/src/main/java/com/gh/common/util/EntranceUtils.java b/app/src/main/java/com/gh/common/util/EntranceUtils.java index 04accff0b5..e2140ee095 100644 --- a/app/src/main/java/com/gh/common/util/EntranceUtils.java +++ b/app/src/main/java/com/gh/common/util/EntranceUtils.java @@ -57,6 +57,7 @@ public class EntranceUtils { public static final String KEY_ORDER = "order"; public static final String KEY_TAGTYPE = "tagType"; public static final String KEY_QUESTIONS_ID = "questionsId"; + public static final String KEY_QUESTIONS_TITLE = "questionsTitle"; public static void jumpActivity(Context context, Bundle bundle) { diff --git a/app/src/main/java/com/gh/gamecenter/AskQuestionsDetailActivity.java b/app/src/main/java/com/gh/gamecenter/AskQuestionsDetailActivity.java index b145e83ec8..6f7a2e7440 100644 --- a/app/src/main/java/com/gh/gamecenter/AskQuestionsDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/AskQuestionsDetailActivity.java @@ -144,7 +144,7 @@ public class AskQuestionsDetailActivity extends BaseActivity implements Fragment } private void showAnswerEdit(String type) { - mAnswerEditFragment = new AnswerEditFragment(); + mAnswerEditFragment = AnswerEditFragment.getInstance(mQuestionsId, mQuestionsDetailFragment.getQuestionsTitle()); getSupportFragmentManager() .beginTransaction() .addToBackStack(type) diff --git a/app/src/main/java/com/gh/gamecenter/ask/AskAnswerDetailFragment.java b/app/src/main/java/com/gh/gamecenter/ask/AskAnswerDetailFragment.java index 28c755beca..756ae9f411 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/AskAnswerDetailFragment.java +++ b/app/src/main/java/com/gh/gamecenter/ask/AskAnswerDetailFragment.java @@ -31,8 +31,8 @@ public class AskAnswerDetailFragment extends NormalFragment { @BindView(R.id.answer_detail_title) TextView mTitle; - @BindView(R.id.answer_detail_content) - RichEditor mContent; + @BindView(R.id.answer_detail_Rd) + RichEditor mRichEditor; @BindView(R.id.answer_detail_time) TextView mTime; @BindView(R.id.answer_detail_edit) @@ -45,11 +45,16 @@ public class AskAnswerDetailFragment extends NormalFragment { SimpleDraweeView mUsericon; @BindView(R.id.answer_detail_username) TextView mUsername; + @BindView(R.id.reuse_no_connection) + View mNoConn; + @BindView(R.id.answer_detail_loading) + View mLoading; + @BindView(R.id.answer_detail_content) + View mContent; private AnswerEntity mAnswerEntity; - // todo 逐步完善 public static AskAnswerDetailFragment getInstance(AnswerEntity entity) { AskAnswerDetailFragment fragment = new AskAnswerDetailFragment(); Bundle args = new Bundle(); @@ -82,11 +87,17 @@ public class AskAnswerDetailFragment extends NormalFragment { public void onResponse(AnswerDetailEntity response) { super.onResponse(response); initView(response); + mNoConn.setVisibility(View.GONE); + mLoading.setVisibility(View.GONE); + mContent.setVisibility(View.VISIBLE); } @Override public void onFailure(HttpException e) { super.onFailure(e); + mNoConn.setVisibility(View.VISIBLE); + mLoading.setVisibility(View.GONE); + mContent.setVisibility(View.GONE); } }); } @@ -101,11 +112,13 @@ public class AskAnswerDetailFragment extends NormalFragment { MeEntity me = entity.getMe(); if (me != null && me.isCommunityVoted()) { mEditBtn.setVisibility(View.VISIBLE); + } else { + mEditBtn.setVisibility(View.GONE); } - mTitle.setText(""); + mTitle.setText(mAnswerEntity.getQuestionTitle()); mVoteCount.setText(getString(R.string.ask_vote_count, entity.getVote())); - mContent.setHtml(entity.getContent()); - mContent.setInputEnabled(false); + mRichEditor.setHtml(entity.getContent()); + mRichEditor.setInputEnabled(false); } } diff --git a/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsHotViewHolder.java b/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsHotViewHolder.java index 833f016337..e31c707b8e 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsHotViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsHotViewHolder.java @@ -56,7 +56,10 @@ public class AskQuestionsHotViewHolder extends BaseRecyclerViewHolder { } List images = entity.getImages(); if (images != null && images.size() > 0) { + mAskImg.setVisibility(View.VISIBLE); ImageUtils.Companion.display(mAskImg, images.get(0)); + } else { + mAskImg.setVisibility(View.GONE); } } diff --git a/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsNewBodyAdapter.java b/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsNewBodyAdapter.java index 334364e16a..8445aa73f9 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsNewBodyAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsNewBodyAdapter.java @@ -9,7 +9,6 @@ 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.QuestionsEntity; import com.gh.gamecenter.ask.entity.Questions; import com.gh.gamecenter.baselist.ListAdapter; import com.gh.gamecenter.baselist.LoadStatus; @@ -24,7 +23,7 @@ public class AskQuestionsNewBodyAdapter extends ListAdapter { private OnListClickListener mListClickListener; - private List mEntityList; + private List mEntityList; public AskQuestionsNewBodyAdapter(Context context, OnListClickListener listClickListener) { @@ -34,7 +33,7 @@ public class AskQuestionsNewBodyAdapter extends ListAdapter { @Override protected void provideListData(List listData) { - mEntityList = (List) listData; + mEntityList = (List) listData; notifyDataSetChanged(); } @@ -69,7 +68,7 @@ public class AskQuestionsNewBodyAdapter extends ListAdapter { return new FooterViewHolder(view, null, mListClickListener); case ItemViewType.ITEM_BODY: view = mLayoutInflater.inflate(R.layout.ask_questions_new_item, parent, false); - return new AskQuestionsNewViewHolder(view, null, mListClickListener); + return new AskQuestionsNewViewHolder(view, mEntityList, mListClickListener); default: return null; } @@ -79,13 +78,10 @@ public class AskQuestionsNewBodyAdapter extends ListAdapter { public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { switch (getItemViewType(position)) { case ItemViewType.ITEM_BODY: - QuestionsEntity askEntity = mEntityList.get(position); + Questions questions = mEntityList.get(position); AskQuestionsNewViewHolder askHolder = (AskQuestionsNewViewHolder) holder; - askHolder.mAnswerCount.setText(mContext.getString(R.string.ask_answer_count, askEntity.getAnswers())); - Questions question = askEntity.getQuestion(); - if (question != null) { - askHolder.mTitle.setText(question.getTitle()); - } + askHolder.mAnswerCount.setText(mContext.getString(R.string.ask_answer_count, questions.getAnswerCount())); + askHolder.mTitle.setText(questions.getTitle()); break; case ItemViewType.ITEM_FOOTER: FooterViewHolder footerViewHolder = (FooterViewHolder) holder; diff --git a/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsNewBodyFragment.java b/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsNewBodyFragment.java index c25b52eee3..ff1633399b 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsNewBodyFragment.java +++ b/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsNewBodyFragment.java @@ -4,8 +4,9 @@ import android.os.Bundle; import android.support.annotation.Nullable; import android.view.View; +import com.gh.gamecenter.AskQuestionsDetailActivity; import com.gh.gamecenter.R; -import com.gh.gamecenter.ask.entity.QuestionsEntity; +import com.gh.gamecenter.ask.entity.Questions; import com.gh.gamecenter.baselist.ListAdapter; import com.gh.gamecenter.baselist.ListFragment; import com.gh.gamecenter.baselist.LoadStatus; @@ -26,13 +27,11 @@ public class AskQuestionsNewBodyFragment extends ListFragment { private AskQuestionsNewBodyAdapter mAdapter; - private String mCommunityId; private String mType; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - mCommunityId = UserManager.getInstance().getCommunityId(getContext()); mType = getArguments().getString(AskQuestionsNewFragment.ASK_QUESTIONS_TYPE); } @@ -43,8 +42,9 @@ public class AskQuestionsNewBodyFragment extends ListFragment { @SuppressWarnings("unchecked") @Override - public Observable> provideDataObservable() { - return RetrofitManager.getInstance(getContext()).getApi().getAskQuestions(mCommunityId, mType, getListOffset()); + public Observable> provideDataObservable() { + return RetrofitManager.getInstance(getContext()).getApi() + .getAskQuestions(UserManager.getInstance().getCommunityId(getContext()), mType, getListOffset()); } @Override @@ -56,6 +56,10 @@ public class AskQuestionsNewBodyFragment extends ListFragment { mListViewModel.load(LoadType.RETRY); } break; + case R.id.ask_questions_new_item: + List questionsList = (List) data; + startActivity(AskQuestionsDetailActivity.getIntent(getContext(), questionsList.get(position).getId())); + break; } } diff --git a/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsNewViewHolder.java b/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsNewViewHolder.java index 474e425bd6..0510a2b3de 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsNewViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsNewViewHolder.java @@ -22,5 +22,6 @@ public class AskQuestionsNewViewHolder extends BaseRecyclerViewHolder { public AskQuestionsNewViewHolder(View itemView, Object data, OnListClickListener listClickListener) { super(itemView, data, listClickListener); + itemView.setOnClickListener(this); } } diff --git a/app/src/main/java/com/gh/gamecenter/ask/QuestionsEditFragment.java b/app/src/main/java/com/gh/gamecenter/ask/QuestionsEditFragment.java index a8e981d985..97abd7e384 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/QuestionsEditFragment.java +++ b/app/src/main/java/com/gh/gamecenter/ask/QuestionsEditFragment.java @@ -9,6 +9,7 @@ import android.os.Bundle; import android.provider.MediaStore; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.v4.content.ContextCompat; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; @@ -22,19 +23,37 @@ import android.view.inputmethod.EditorInfo; import android.widget.EditText; import android.widget.TextView; +import com.gh.base.fragment.WaitingDialogFragment; +import com.gh.common.util.CheckLoginUtils; import com.gh.common.util.DisplayUtils; +import com.gh.common.util.GsonUtils; +import com.gh.common.util.ImageUtils; import com.gh.gamecenter.R; +import com.gh.gamecenter.ask.entity.QuestionsDetailEntity; +import com.gh.gamecenter.manager.UserManager; import com.gh.gamecenter.normal.NormalFragment; +import com.gh.gamecenter.retrofit.Response; +import com.gh.gamecenter.retrofit.RetrofitManager; import com.gh.gamecenter.suggest.SuggestPicAdapter; import com.google.android.flexbox.FlexboxLayout; import com.lightgame.utils.Util_System_Keyboard; import com.lightgame.utils.Utils; +import org.jetbrains.annotations.NotNull; + import java.io.File; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import okhttp3.MediaType; +import okhttp3.RequestBody; +import okhttp3.ResponseBody; +import retrofit2.HttpException; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; import static com.gh.gamecenter.SuggestionActivity.MEDIA_STORE_REQUEST; @@ -57,6 +76,10 @@ public class QuestionsEditFragment extends NormalFragment { private SuggestPicAdapter mAdapter; + private WaitingDialogFragment mPostDialog; + + private List mTagList = new ArrayList<>(); + @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -101,7 +124,7 @@ public class QuestionsEditFragment extends NormalFragment { @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - setNavigationTitle(""); + setNavigationTitle("社区对应的游戏名字"); mPicRv.setLayoutManager(new LinearLayoutManager(getContext(), RecyclerView.HORIZONTAL, false)); // 意见反馈上传图片列表 @@ -115,24 +138,107 @@ public class QuestionsEditFragment extends NormalFragment { mPicRv.setAdapter(mAdapter); } - @OnClick({R.id.questionsedit_tag_add}) + @OnClick({R.id.questionsedit_tag_add, R.id.questionsedit_post}) public void onClick(View v) { - if (v.getId() == R.id.questionsedit_tag_add) { - showAddTagDialog(); - } + switch (v.getId()) { + case R.id.questionsedit_tag_add: + showAddTagDialog(); + break; + case R.id.questionsedit_post: + mPostDialog = WaitingDialogFragment.newInstance(getString(R.string.vote_post)); + mPostDialog.show(getChildFragmentManager(), null); + CheckLoginUtils.checkLogin(getContext(), () -> { + ImageUtils.Companion.postImageArr(getContext(), mAdapter.getFileList(), new ImageUtils.OnPostImageListener() { + @Override + public void postError() { + mPostDialog.dismissAllowingStateLoss(); + } + + @Override + public void postSuccess(@NotNull HashMap imgMap) { + List imgs = new ArrayList<>(); + for (String s : imgMap.keySet()) { + imgs.add(imgMap.get(s)); + } + postQuestions(imgs); + } + + }); + }); + break; + } } - private void addTag(String tag) { + private void postQuestions(List imgs) { + String title = mTitle.getText().toString(); + if (TextUtils.isEmpty(title)) { + toast("标题不能为空"); + return; + } + String content = mContent.getText().toString(); + if (TextUtils.isEmpty(content)) { + toast("内容不能为空"); + return; + } + + QuestionsDetailEntity entity = new QuestionsDetailEntity(); + entity.setTitle(title); + entity.setTags(mTagList); + entity.setImages(imgs); + entity.setDescription(content); + String jsonBody = GsonUtils.Companion.getInstance().toJson(entity); + Utils.log("postQuestions->Body:" + jsonBody); + RequestBody body = RequestBody.create(MediaType.parse("application/json"), jsonBody); + RetrofitManager.getInstance(getContext()).getApi() + .postQuestions(body, UserManager.getInstance().getCommunityId(getContext())) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Response() { + @Override + public void onResponse(ResponseBody response) { + super.onResponse(response); + mPostDialog.dismissAllowingStateLoss(); + toast("提交成功"); + } + + @Override + public void onFailure(HttpException e) { + super.onFailure(e); + mPostDialog.dismissAllowingStateLoss(); + toast("提交失败"); + } + }); + } + + private void addTag(String tag, boolean isDefault) { View view = LayoutInflater.from(getContext()).inflate(R.layout.questionsdedit_tag_item, null); TextView tagTv = (TextView) view; tagTv.setText(tag); + if (!isDefault) { + tagTv.setBackgroundResource(R.drawable.comment_border_bg); + tagTv.setTextColor(ContextCompat.getColor(getContext(), R.color.theme)); + } FlexboxLayout.LayoutParams params = new FlexboxLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); params.setMargins(0, DisplayUtils.dip2px(getContext(), 5), DisplayUtils.dip2px(getContext(), 15), DisplayUtils.dip2px(getContext(), 5)); tagTv.setLayoutParams(params); mTagFl.addView(view, 0); + mTagList.add(tag); } + @Override + public void onListClick(View view, int position, Object data) { + super.onListClick(view, position, data); + List picList = (List) data; + if (position == mAdapter.getItemCount() - 1 && picList.size() < 5) { + Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); + startActivityForResult(intent, MEDIA_STORE_REQUEST); + } + + } + + + // todo 重构 private void showAddTagDialog() { final Dialog dialog = new Dialog(getContext()); @@ -154,7 +260,7 @@ public class QuestionsEditFragment extends NormalFragment { Utils.toast(getContext(), getString(R.string.vote_empty_hint)); return true; } - addTag(nickname); + addTag(nickname, false); dialog.dismiss(); return true; } @@ -181,7 +287,7 @@ public class QuestionsEditFragment extends NormalFragment { Utils.toast(getContext(), getString(R.string.vote_empty_hint)); return; } - addTag(nickname); + addTag(nickname, false); dialog.dismiss(); } }); @@ -205,15 +311,5 @@ public class QuestionsEditFragment extends NormalFragment { }, 300); } - @Override - public void onListClick(View view, int position, Object data) { - super.onListClick(view, position, data); - List picList = (List) data; - if (position == mAdapter.getItemCount() - 1 && picList.size() < 5) { - Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); - startActivityForResult(intent, MEDIA_STORE_REQUEST); - } - - } } diff --git a/app/src/main/java/com/gh/gamecenter/ask/entity/AnswerDetailEntity.kt b/app/src/main/java/com/gh/gamecenter/ask/entity/AnswerDetailEntity.kt index 352f26b1c2..c6b8107a98 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/entity/AnswerDetailEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/ask/entity/AnswerDetailEntity.kt @@ -11,7 +11,7 @@ class AnswerDetailEntity() : Parcelable { var content: String? = null - var time: Long? = null + var time: AskTimeEntity? = null var me: MeEntity? = null @@ -21,14 +21,14 @@ class AnswerDetailEntity() : Parcelable { constructor(parcel: Parcel) : this() { content = parcel.readString() - time = parcel.readValue(Long::class.java.classLoader) as? Long + time = parcel.readParcelable(AskTimeEntity::class.java.classLoader) user = parcel.readParcelable(UserEntity::class.java.classLoader) vote = parcel.readInt() } override fun writeToParcel(parcel: Parcel, flags: Int) { parcel.writeString(content) - parcel.writeValue(time) + parcel.writeParcelable(time, flags) parcel.writeParcelable(user, flags) parcel.writeInt(vote) } diff --git a/app/src/main/java/com/gh/gamecenter/ask/entity/AnswerEntity.kt b/app/src/main/java/com/gh/gamecenter/ask/entity/AnswerEntity.kt index 9de9feb583..030968255a 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/entity/AnswerEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/ask/entity/AnswerEntity.kt @@ -15,6 +15,8 @@ class AnswerEntity() : Parcelable { var brief: String? = null + var questionTitle: String? = null + var images: List? = null var vote: Int = 0 @@ -24,6 +26,7 @@ class AnswerEntity() : Parcelable { constructor(parcel: Parcel) : this() { id = parcel.readString() brief = parcel.readString() + questionTitle = parcel.readString() images = parcel.createStringArrayList() vote = parcel.readInt() user = parcel.readParcelable(UserEntity::class.java.classLoader) @@ -32,6 +35,7 @@ class AnswerEntity() : Parcelable { override fun writeToParcel(parcel: Parcel, flags: Int) { parcel.writeString(id) parcel.writeString(brief) + parcel.writeString(questionTitle) parcel.writeStringList(images) parcel.writeInt(vote) parcel.writeParcelable(user, flags) diff --git a/app/src/main/java/com/gh/gamecenter/ask/entity/AskOpenEntity.kt b/app/src/main/java/com/gh/gamecenter/ask/entity/AskOpenEntity.kt index 5327cd224b..404d8146c3 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/entity/AskOpenEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/ask/entity/AskOpenEntity.kt @@ -7,6 +7,7 @@ import com.google.gson.annotations.SerializedName * Created by khy on 11/12/17. */ class AskOpenEntity { + @SerializedName("_id") var id: String? = null diff --git a/app/src/main/java/com/gh/gamecenter/ask/entity/AskTimeEntity.kt b/app/src/main/java/com/gh/gamecenter/ask/entity/AskTimeEntity.kt index 622e43e6f1..efee1fe919 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/entity/AskTimeEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/ask/entity/AskTimeEntity.kt @@ -1,13 +1,45 @@ package com.gh.gamecenter.ask.entity +import android.os.Parcel +import android.os.Parcelable + /** * Created by khy on 11/12/17. */ -class AskTimeEntity { +class AskTimeEntity() : Parcelable { var create: Long? = null var update: Long? = null var open: Long? = null + + constructor(parcel: Parcel) : this() { + create = parcel.readValue(Long::class.java.classLoader) as? Long + update = parcel.readValue(Long::class.java.classLoader) as? Long + open = parcel.readValue(Long::class.java.classLoader) as? Long + } + + override fun writeToParcel(parcel: Parcel, flags: Int) { + parcel.writeValue(create) + parcel.writeValue(update) + parcel.writeValue(open) + } + + override fun describeContents(): Int { + return 0 + } + + companion object { + @JvmField + val CREATOR: Parcelable.Creator = object : Parcelable.Creator { + override fun createFromParcel(parcel: Parcel): AskTimeEntity { + return AskTimeEntity(parcel) + } + + override fun newArray(size: Int): Array { + return arrayOfNulls(size) + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/ask/entity/Questions.kt b/app/src/main/java/com/gh/gamecenter/ask/entity/Questions.kt index 45b3733adc..99c9cd4090 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/entity/Questions.kt +++ b/app/src/main/java/com/gh/gamecenter/ask/entity/Questions.kt @@ -15,5 +15,5 @@ class Questions { var answers: String? = null @SerializedName("answer_count") - var answersCount: Int = 0 + var answerCount: Int = 0 } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsDetailEntity.kt b/app/src/main/java/com/gh/gamecenter/ask/entity/QuestionsDetailEntity.kt similarity index 84% rename from app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsDetailEntity.kt rename to app/src/main/java/com/gh/gamecenter/ask/entity/QuestionsDetailEntity.kt index 4ac3f63810..4f4da88737 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsDetailEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/ask/entity/QuestionsDetailEntity.kt @@ -1,4 +1,4 @@ -package com.gh.gamecenter.ask.questionsdetail +package com.gh.gamecenter.ask.entity /** * Created by khy on 18/12/17. diff --git a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerEditFragment.java b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerEditFragment.java index a6160ecff9..06f25dec43 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerEditFragment.java +++ b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerEditFragment.java @@ -12,15 +12,20 @@ import android.widget.ImageView; import android.widget.TextView; import com.gh.base.fragment.BaseFragment; +import com.gh.base.fragment.WaitingDialogFragment; import com.gh.common.util.CheckLoginUtils; +import com.gh.common.util.EntranceUtils; import com.gh.common.util.ImageUtils; import com.gh.common.view.RichEditor; import com.gh.gamecenter.R; -import com.gh.base.fragment.WaitingDialogFragment; +import com.gh.gamecenter.retrofit.Response; +import com.gh.gamecenter.retrofit.RetrofitManager; import com.lightgame.config.CommonDebug; import com.lightgame.utils.Utils; import org.jetbrains.annotations.NotNull; +import org.json.JSONException; +import org.json.JSONObject; import java.util.ArrayList; import java.util.HashMap; @@ -28,6 +33,12 @@ import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import okhttp3.MediaType; +import okhttp3.RequestBody; +import okhttp3.ResponseBody; +import retrofit2.HttpException; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; import static com.gh.gamecenter.SelectUserIconActivity.MEDIA_ICON_REQUEST; @@ -49,6 +60,20 @@ public class AnswerEditFragment extends BaseFragment { private WaitingDialogFragment postDialog; + private String mQuestionsId; + + private String mQuestionsTitle; + + public static AnswerEditFragment getInstance(String questionsId, String questionsTitle) { + AnswerEditFragment fragment = new AnswerEditFragment(); + Bundle args = new Bundle(); + args.putString(EntranceUtils.KEY_QUESTIONS_ID, questionsId); + args.putString(EntranceUtils.KEY_QUESTIONS_TITLE, questionsTitle); + fragment.setArguments(args); + return fragment; + } + + @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -75,6 +100,16 @@ public class AnswerEditFragment extends BaseFragment { } } + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Bundle arguments = getArguments(); + if (arguments != null) { + mQuestionsId = arguments.getString(EntranceUtils.KEY_QUESTIONS_ID); + mQuestionsTitle = arguments.getString(EntranceUtils.KEY_QUESTIONS_TITLE); + } + } + @Override protected int getLayoutId() { return R.layout.fragment_answer_edit; @@ -83,6 +118,7 @@ public class AnswerEditFragment extends BaseFragment { @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); + mTitle.setText(mQuestionsTitle); mEditContent.setPadding(20, 15, 20, 15); } @@ -99,10 +135,10 @@ public class AnswerEditFragment extends BaseFragment { } String answerContent = mEditContent.getHtml(); for (String s : imgMap.keySet()) { - answerContent = answerContent.replace(FILE_HOST + s, imgMap.get(s)); // todo 需要测试 + answerContent = answerContent.replace(FILE_HOST + s, imgMap.get(s)); } - postDialog.dismissAllowingStateLoss(); + post(answerContent); if (CommonDebug.IS_DEBUG) Utils.log("answerEditHtml:" + answerContent); } @@ -115,6 +151,44 @@ public class AnswerEditFragment extends BaseFragment { }); } + private void post(String editContent) { + JSONObject content = new JSONObject(); + try { + content.put("content", editContent); + } catch (JSONException e) { + e.printStackTrace(); + } + RequestBody body = RequestBody.create(MediaType.parse("application/json"), content.toString()); + + RetrofitManager.getInstance(getContext()).getApi() + .postQuestionAnswer(body, mQuestionsId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Response() { + @Override + public void onResponse(ResponseBody response) { + super.onResponse(response); + postDialog.dismissAllowingStateLoss(); + toast("提交成功"); + } + + @Override + public void onError(Throwable e) { + super.onError(e); + if (CommonDebug.IS_DEBUG) { + Utils.log("postAnswer-> :", e.toString() ); + } + } + + @Override + public void onFailure(HttpException e) { + super.onFailure(e); + postDialog.dismissAllowingStateLoss(); + toast("提交失败"); + } + }); + } + @OnClick({R.id.answer_edit_img_icon}) public void onClick(View view) { if (view.getId() == R.id.answer_edit_img_icon) { diff --git a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerFoldAdapter.java b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerFoldAdapter.java index bb81b21622..1e54a39971 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerFoldAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerFoldAdapter.java @@ -9,8 +9,7 @@ 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.AskQuestionsHotViewHolder; -import com.gh.gamecenter.ask.entity.QuestionsEntity; +import com.gh.gamecenter.ask.entity.AnswerEntity; import com.gh.gamecenter.baselist.ListAdapter; import com.gh.gamecenter.baselist.LoadStatus; @@ -24,7 +23,7 @@ public class AnswerFoldAdapter extends ListAdapter { private OnListClickListener mListClickListener; - private List mEntityList; + private List mEntityList; public AnswerFoldAdapter(Context context, OnListClickListener listClickListener) { super(context); @@ -33,7 +32,7 @@ public class AnswerFoldAdapter extends ListAdapter { @Override protected void provideListData(List listData) { - mEntityList = (List) listData; + mEntityList = (List) listData; notifyDataSetChanged(); } @@ -56,8 +55,8 @@ public class AnswerFoldAdapter extends ListAdapter { view = mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false); return new FooterViewHolder(view, null, mListClickListener); case ItemViewType.ITEM_BODY: - view = mLayoutInflater.inflate(R.layout.ask_questions_hot_item, parent, false); - return new AskQuestionsHotViewHolder(view, mEntityList, mListClickListener); + view = mLayoutInflater.inflate(R.layout.ask_answer_item, parent, false); + return new AnswerViewHolder(view, mEntityList, mListClickListener); default: return null; } @@ -67,7 +66,7 @@ public class AnswerFoldAdapter extends ListAdapter { public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { switch (getItemViewType(position)) { case ItemViewType.ITEM_BODY: - ((AskQuestionsHotViewHolder) holder).initQuestionsHotViewHolder(mContext, mEntityList.get(position)); + ((AnswerViewHolder) holder).initAnswerViewHolder(mContext, mEntityList.get(position)); break; case ItemViewType.ITEM_FOOTER: FooterViewHolder footerViewHolder = (FooterViewHolder) holder; @@ -79,6 +78,6 @@ public class AnswerFoldAdapter extends ListAdapter { @Override public int getItemCount() { - return 0; + return mEntityList == null || mEntityList.isEmpty() ? 0 : mEntityList.size() + FOOTER_ITEM_COUNT; } } diff --git a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerFoldFragment.java b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerFoldFragment.java index 8ea619cd3c..93b50729e0 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerFoldFragment.java +++ b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerFoldFragment.java @@ -4,7 +4,7 @@ import android.os.Bundle; import android.support.annotation.Nullable; import com.gh.common.util.EntranceUtils; -import com.gh.gamecenter.ask.entity.QuestionsEntity; +import com.gh.gamecenter.ask.entity.AnswerEntity; import com.gh.gamecenter.baselist.ListAdapter; import com.gh.gamecenter.baselist.ListFragment; import com.gh.gamecenter.retrofit.RetrofitManager; @@ -39,7 +39,7 @@ public class AnswerFoldFragment extends ListFragment { } @Override - public Observable> provideDataObservable() { + public Observable> provideDataObservable() { return RetrofitManager.getInstance(getContext()).getApi().getQuestionsAnswer(mQuestionsId, true); } diff --git a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerViewHolder.java b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerViewHolder.java new file mode 100644 index 0000000000..e611d5ea8c --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerViewHolder.java @@ -0,0 +1,57 @@ +package com.gh.gamecenter.ask.questionsdetail; + +import android.content.Context; +import android.view.View; +import android.widget.TextView; + +import com.facebook.drawee.view.SimpleDraweeView; +import com.gh.base.BaseRecyclerViewHolder; +import com.gh.base.OnListClickListener; +import com.gh.common.util.ImageUtils; +import com.gh.gamecenter.R; +import com.gh.gamecenter.ask.entity.AnswerEntity; +import com.gh.gamecenter.entity.UserEntity; + +import java.util.List; + +import butterknife.BindView; + +/** + * Created by khy on 19/12/17. + */ + +public class AnswerViewHolder extends BaseRecyclerViewHolder { + + @BindView(R.id.ask_answer_item_usericon) + SimpleDraweeView mUsericon; + @BindView(R.id.ask_answer_item_username) + TextView mUsername; + @BindView(R.id.ask_answer_item_content) + TextView mContent; + @BindView(R.id.ask_answer_item_img) + SimpleDraweeView mImg; + @BindView(R.id.ask_answer_item_votecount) + TextView mVotecount; + + public AnswerViewHolder(View itemView, Object data, OnListClickListener listClickListener) { + super(itemView, data, listClickListener); + itemView.setOnClickListener(this); + } + + public void initAnswerViewHolder(Context context, AnswerEntity entity) { + mContent.setText(entity.getBrief()); + mVotecount.setText(context.getString(R.string.ask_vote_count, entity.getVote())); + UserEntity user = entity.getUser(); + if (user != null) { + mUsername.setText(user.getName()); + ImageUtils.Companion.display(mUsericon, user.getIcon()); + } + List images = entity.getImages(); + if (images != null && images.size() > 0) { + mImg.setVisibility(View.VISIBLE); + ImageUtils.Companion.display(mImg, images.get(0)); + } else { + mImg.setVisibility(View.GONE); + } + } +} diff --git a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsDetailAdapter.java b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsDetailAdapter.java index e6bc89e676..a7409dca5e 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsDetailAdapter.java @@ -1,6 +1,7 @@ package com.gh.gamecenter.ask.questionsdetail; import android.content.Context; +import android.support.v4.content.ContextCompat; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; @@ -13,8 +14,8 @@ import com.gh.common.util.DisplayUtils; import com.gh.common.util.ImageUtils; import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.viewholder.ReuseViewHolder; -import com.gh.gamecenter.ask.AskQuestionsHotViewHolder; -import com.gh.gamecenter.ask.entity.QuestionsEntity; +import com.gh.gamecenter.ask.entity.AnswerEntity; +import com.gh.gamecenter.ask.entity.QuestionsDetailEntity; import com.gh.gamecenter.baselist.ListAdapter; import com.gh.gamecenter.baselist.LoadStatus; import com.google.android.flexbox.FlexboxLayout; @@ -29,11 +30,11 @@ public class QuestionsDetailAdapter extends ListAdapter { private OnListClickListener mListClickListener; - private List mEntityList; + private List mEntityList; private QuestionsDetailEntity mQuestionsDetailEntity; - public QuestionsDetailAdapter(Context context, OnListClickListener listClickListener) { + QuestionsDetailAdapter(Context context, OnListClickListener listClickListener) { super(context); mListClickListener = listClickListener; } @@ -43,9 +44,13 @@ public class QuestionsDetailAdapter extends ListAdapter { notifyDataSetChanged(); } + public String getQuestionsTitle() { + return mQuestionsDetailEntity != null ? mQuestionsDetailEntity.getTitle() : ""; + } + @Override protected void provideListData(List listData) { - mEntityList = (List) listData; + mEntityList = (List) listData; notifyDataSetChanged(); } @@ -76,8 +81,8 @@ public class QuestionsDetailAdapter extends ListAdapter { view = mLayoutInflater.inflate(R.layout.questionsdetail_footer_item, parent, false); return new ReuseViewHolder(view, null, mListClickListener); case ItemViewType.ITEM_BODY: - view = mLayoutInflater.inflate(R.layout.ask_questions_hot_item, parent, false); - return new AskQuestionsHotViewHolder(view, mEntityList, mListClickListener); + view = mLayoutInflater.inflate(R.layout.ask_answer_item, parent, false); + return new AnswerViewHolder(view, mEntityList, mListClickListener); default: return null; } @@ -92,9 +97,8 @@ public class QuestionsDetailAdapter extends ListAdapter { break; case ItemViewType.ITEM_FOOTER: break; - case ItemViewType.ITEM_BODY: //todo 还是把答案Item和问题ITEM分开写吧 虽然都一样 - ((AskQuestionsHotViewHolder) holder).initQuestionsHotViewHolder(mContext, mEntityList.get(position - 1)); - ((AskQuestionsHotViewHolder) holder).mAskTitle.setVisibility(View.GONE); + case ItemViewType.ITEM_BODY: + ((AnswerViewHolder) holder).initAnswerViewHolder(mContext, mEntityList.get(position - ListAdapter.TOP_ITEM_COUNT)); break; } } @@ -121,6 +125,8 @@ public class QuestionsDetailAdapter extends ListAdapter { View view = LayoutInflater.from(mContext).inflate(R.layout.questionsdedit_tag_item, null); TextView tagTv = (TextView) view; tagTv.setText(tag); + tagTv.setBackgroundResource(R.drawable.comment_border_bg); + tagTv.setTextColor(ContextCompat.getColor(mContext, R.color.theme)); FlexboxLayout.LayoutParams params = new FlexboxLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); params.setMargins(0, DisplayUtils.dip2px(mContext, 5), DisplayUtils.dip2px(mContext, 15), @@ -143,7 +149,6 @@ public class QuestionsDetailAdapter extends ListAdapter { if (mEntityList != null) { index += mEntityList.size(); } - if (mQuestionsDetailEntity != null || mEntityList != null) { index++; } diff --git a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsDetailFragment.java b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsDetailFragment.java index 584cda191b..7e2f7dd863 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsDetailFragment.java +++ b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsDetailFragment.java @@ -12,7 +12,7 @@ import com.gh.gamecenter.NormalActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.ask.AskAnswerDetailFragment; import com.gh.gamecenter.ask.entity.AnswerEntity; -import com.gh.gamecenter.ask.entity.QuestionsEntity; +import com.gh.gamecenter.ask.entity.QuestionsDetailEntity; import com.gh.gamecenter.baselist.ListAdapter; import com.gh.gamecenter.baselist.ListFragment; import com.gh.gamecenter.baselist.LoadType; @@ -89,7 +89,7 @@ public class QuestionsDetailFragment extends ListFragment { } @Override - public Observable> provideDataObservable() { + public Observable> provideDataObservable() { return RetrofitManager.getInstance(getContext()).getApi().getQuestionsAnswer(mQuestionsId, false); } @@ -101,18 +101,21 @@ public class QuestionsDetailFragment extends ListFragment { if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) ((AskQuestionsDetailActivity) getActivity()).show(AskQuestionsDetailActivity.QUESTIONS_DETAIL_FOLD); break; - case R.id.ask_item_constraintlayout: - List entityList = (List) data; - QuestionsEntity questionsEntity = entityList.get(position - 1); + case R.id.ask_answer_item_constraintlayout: + List entityList = (List) data; + AnswerEntity entity = entityList.get(position - ListAdapter.TOP_ITEM_COUNT); + entity.setQuestionTitle(mAdapter.getQuestionsTitle()); Bundle bundle = new Bundle(); - AnswerEntity value = new AnswerEntity(); - value.setId(questionsEntity.getId()); - bundle.putParcelable(AnswerEntity.TAG, value); + bundle.putParcelable(AnswerEntity.TAG, entity); NormalActivity.startFragment(getContext(), AskAnswerDetailFragment.class, bundle); break; } } + public String getQuestionsTitle() { + return mAdapter.getQuestionsTitle(); + } + public void getQuestionsDetail() { RetrofitManager.getInstance(getContext()).getApi() .getQuestionsById(mQuestionsId) diff --git a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsInviteAdapter.java b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsInviteAdapter.java index cc1406f301..10be967ac0 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsInviteAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsInviteAdapter.java @@ -97,6 +97,6 @@ public class QuestionsInviteAdapter extends ListAdapter { @Override public int getItemCount() { - return mEntityList != null ? mEntityList.size() + 2 : 2; + return mEntityList != null ? mEntityList.size() + TOP_ITEM_COUNT + FOOTER_ITEM_COUNT : TOP_ITEM_COUNT + FOOTER_ITEM_COUNT; } } diff --git a/app/src/main/java/com/gh/gamecenter/ask/search/AskSearchAdapter.java b/app/src/main/java/com/gh/gamecenter/ask/search/AskSearchAdapter.java index 8a09cae3c8..e3b29754f2 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/search/AskSearchAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/ask/search/AskSearchAdapter.java @@ -85,7 +85,7 @@ public class AskSearchAdapter extends ListAdapter { Questions question = searchEntity.getQuestion(); if (question != null) { askHolder.mTitle.setText(Html.fromHtml(question.getTitle())); - askHolder.mAnswercount.setText(mContext.getString(R.string.ask_answer_count, question.getAnswersCount())); + askHolder.mAnswercount.setText(mContext.getString(R.string.ask_answer_count, question.getAnswerCount())); } askHolder.mContent.setText(Html.fromHtml(searchEntity.getBrief())); break; diff --git a/app/src/main/java/com/gh/gamecenter/ask/search/AskSearchFragment.java b/app/src/main/java/com/gh/gamecenter/ask/search/AskSearchFragment.java index d27179a9ad..e6f0fd4ba2 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/search/AskSearchFragment.java +++ b/app/src/main/java/com/gh/gamecenter/ask/search/AskSearchFragment.java @@ -3,6 +3,7 @@ package com.gh.gamecenter.ask.search; import android.text.TextUtils; import android.view.View; +import com.gh.gamecenter.AskQuestionsDetailActivity; import com.gh.gamecenter.NormalActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.ask.QuestionsEditFragment; @@ -56,7 +57,8 @@ public class AskSearchFragment extends ListFragment { break; case R.id.ask_search_item: List list = (List) data; - + String id = list.get(position).getQuestion().getId(); + startActivity(AskQuestionsDetailActivity.getIntent(getContext(), id)); break; } diff --git a/app/src/main/java/com/gh/gamecenter/ask/search/AskSearchItemViewHolder.java b/app/src/main/java/com/gh/gamecenter/ask/search/AskSearchItemViewHolder.java index 3d889225ab..fd19607610 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/search/AskSearchItemViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/ask/search/AskSearchItemViewHolder.java @@ -24,5 +24,6 @@ public class AskSearchItemViewHolder extends BaseRecyclerViewHolder { public AskSearchItemViewHolder(View itemView, Object data, OnListClickListener listClickListener) { super(itemView, data, listClickListener); + itemView.setOnClickListener(this); } } diff --git a/app/src/main/java/com/gh/gamecenter/baselist/ListAdapter.java b/app/src/main/java/com/gh/gamecenter/baselist/ListAdapter.java index 39001ad837..0a8d712fa1 100644 --- a/app/src/main/java/com/gh/gamecenter/baselist/ListAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/baselist/ListAdapter.java @@ -12,7 +12,8 @@ import java.util.List; public abstract class ListAdapter extends BaseRecyclerAdapter { - protected static final int FOOTER_ITEM_COUNT = 1; + public static final int FOOTER_ITEM_COUNT = 1; + public static final int TOP_ITEM_COUNT = 1; protected boolean mIsOver; diff --git a/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java b/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java index bd2055933a..cd393656c9 100644 --- a/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java +++ b/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java @@ -1,12 +1,14 @@ package com.gh.gamecenter.retrofit.service; 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.AskTagGroupsEntity; import com.gh.gamecenter.ask.entity.InviteEntity; +import com.gh.gamecenter.ask.entity.Questions; +import com.gh.gamecenter.ask.entity.QuestionsDetailEntity; import com.gh.gamecenter.ask.entity.QuestionsEntity; -import com.gh.gamecenter.ask.questionsdetail.QuestionsDetailEntity; import com.gh.gamecenter.entity.AppEntity; import com.gh.gamecenter.entity.CommentEntity; import com.gh.gamecenter.entity.CommentnumEntity; @@ -704,8 +706,8 @@ public interface ApiService { /** * 获取社区首页-问题列表 */ - @GET("communities/{community_id}/questions") - Observable> getAskQuestions(@Path("community_id") String communityId, @Query("type_group") String type, @Query("offset") int offset); + @GET("communities/{community_id}/questions?view=digest") + Observable> getAskQuestions(@Path("community_id") String communityId, @Query("type_group") String type, @Query("offset") int offset); /** * 获取社区首页栏目 @@ -723,7 +725,7 @@ public interface ApiService { * 社区问题的答案列表 */ @GET("questions/{questions_id}/answers?view=digest") - Observable> getQuestionsAnswer(@Path("questions_id") String questionsId, @Query("fold") boolean isFold); + Observable> getQuestionsAnswer(@Path("questions_id") String questionsId, @Query("fold") boolean isFold); /** * 获取社区达人列表 @@ -746,12 +748,24 @@ public interface ApiService { /** * 对社区问题进行回答 */ - @POST("/questions/{question_id}/answers") - Observable postQuestionAnswer(@Path("community_id") String questionsId); + @POST("questions/{question_id}/answers") + Observable postQuestionAnswer(@Body RequestBody body, @Path("question_id") String questionsId); /** * 答案详情 */ - @GET("answers/{answer_id}") + @GET("answers/{answer_id}?view=detail") Observable getAnswerDetail(@Path("answer_id") String answerId); + + /** + * 获取社区问题标签 + */ + @GET("communities/{community_id}/tags") + Observable> getCommunitiesTags(@Path("community_id") String communityId); + + /** + * 添加社区问题 + */ + @POST("communities/{community_id}/questions") + Observable postQuestions(@Body RequestBody body, @Path("community_id") String communityId); } \ No newline at end of file diff --git a/app/src/main/res/layout/ask_answer_item.xml b/app/src/main/res/layout/ask_answer_item.xml new file mode 100644 index 0000000000..b72477af20 --- /dev/null +++ b/app/src/main/res/layout/ask_answer_item.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/ask_questions_new_item.xml b/app/src/main/res/layout/ask_questions_new_item.xml index b921f585a3..e5a70d796e 100644 --- a/app/src/main/res/layout/ask_questions_new_item.xml +++ b/app/src/main/res/layout/ask_questions_new_item.xml @@ -1,5 +1,6 @@ - + android:layout_height = "match_parent" > - + android:layout_height = "match_parent" + android:layout_marginTop = "8dp" + android:background = "@android:color/white" + android:visibility = "gone" > - - - - - - - - + android:paddingLeft = "20dp" + android:paddingRight = "20dp" > - + - + + + + + + + + + + + - + - + - - \ No newline at end of file + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_questions_edit.xml b/app/src/main/res/layout/fragment_questions_edit.xml index a0ca5b60b2..1576e50e58 100644 --- a/app/src/main/res/layout/fragment_questions_edit.xml +++ b/app/src/main/res/layout/fragment_questions_edit.xml @@ -96,6 +96,7 @@ android:lineSpacingMultiplier = "1.2" android:minLines = "2" android:padding = "20dp" + android:maxLength="30" android:textColorHint = "@color/content" android:textCursorDrawable = "@drawable/cursor_color" android:textSize = "13sp" />