From df8753e1c4201e20f15386d4b537b80024095429 Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Thu, 29 Nov 2018 17:21:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=AE=A1=E7=90=86=E5=91=98?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=97=AE=E9=A2=98=EF=BC=8C=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E8=B5=84=E8=AE=AF=E4=B8=AD=E5=BF=83=E4=B8=89=E5=BC=A0=E5=9B=BE?= =?UTF-8?q?=E7=89=87=E7=9A=84Item=E6=97=A0=E6=B3=95=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gh/gamecenter/info/OriginalAdapter.java | 16 ----- .../qa/questions/edit/QuestionEditActivity.kt | 61 ++++++++++--------- .../qa/questions/edit/TagsSelectFragment.kt | 15 ++++- .../questions/edit/manager/HistoryAdapter.kt | 15 ++++- .../edit/manager/HistoryItemViewHolder.kt | 6 ++ app/src/main/res/layout/news_image2_item.xml | 15 +++-- .../main/res/layout/question_history_item.xml | 59 ++++++++++++++++-- 7 files changed, 129 insertions(+), 58 deletions(-) create mode 100644 app/src/main/java/com/gh/gamecenter/qa/questions/edit/manager/HistoryItemViewHolder.kt diff --git a/app/src/main/java/com/gh/gamecenter/info/OriginalAdapter.java b/app/src/main/java/com/gh/gamecenter/info/OriginalAdapter.java index e93db5afa6..aee8f5a00d 100644 --- a/app/src/main/java/com/gh/gamecenter/info/OriginalAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/info/OriginalAdapter.java @@ -3,10 +3,8 @@ package com.gh.gamecenter.info; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; -import android.util.DisplayMetrics; import android.view.View; import android.view.ViewGroup; -import android.widget.LinearLayout; import com.gh.base.OnListClickListener; import com.gh.common.constant.ItemViewType; @@ -113,20 +111,6 @@ class OriginalAdapter extends ListAdapter { NewsEntity newsEntity = mEntityList.get(position); viewHolder.setClickData(newsEntity); - DisplayMetrics outMetrics = new DisplayMetrics(); - int width = (outMetrics.widthPixels - DisplayUtils.dip2px(mContext, 56)) / 3; - int height = (int) (width * 3 / 4f); - - LinearLayout.LayoutParams lparams1 = new LinearLayout.LayoutParams(width, height); - viewHolder.thumb1.setLayoutParams(lparams1); - - LinearLayout.LayoutParams lparams2 = new LinearLayout.LayoutParams(width, height); - lparams2.leftMargin = DisplayUtils.dip2px(mContext, 8); - viewHolder.thumb2.setLayoutParams(lparams2); - - LinearLayout.LayoutParams lparams3 = new LinearLayout.LayoutParams(width, height); - lparams3.leftMargin = DisplayUtils.dip2px(mContext, 8); - viewHolder.thumb3.setLayoutParams(lparams3); viewHolder.title.setText(newsEntity.getTitle()); ImageUtils.display(viewHolder.thumb1, newsEntity.getThumbnail().getUrl().get(0)); diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditActivity.kt index 95c87f41b0..cf6effb71c 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditActivity.kt @@ -33,7 +33,7 @@ class QuestionEditActivity : BaseActivity() { private lateinit var mBinding: ActivityQuestionsEditBinding - private var mViewModel: QuestionEditViewModel? = null + private lateinit var mViewModel: QuestionEditViewModel private var mProcessingDialog: WaitingDialogFragment? = null private var mUploadImageCancelDialog: Dialog? = null @@ -77,7 +77,7 @@ class QuestionEditActivity : BaseActivity() { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (data != null && requestCode == MEDIA_STORE_REQUEST) { - mViewModel?.uploadPic(data) + mViewModel.uploadPic(data) } } @@ -92,31 +92,31 @@ class QuestionEditActivity : BaseActivity() { if (intent != null) { val detailEntity = intent.getParcelableExtra(QuestionsDetailEntity.TAG) if (detailEntity != null) { // 问题编辑 - mViewModel?.questionEntity = detailEntity - mViewModel?.content = detailEntity.description - mViewModel?.picList?.postValue(detailEntity.images as MutableList?) - mViewModel?.isManagerPatch = intent.getBooleanExtra(QuestionsDetailEntity.TAG, false) - if (mViewModel?.title.isNullOrEmpty()) mViewModel?.title = detailEntity.title + mViewModel.questionEntity = detailEntity + mViewModel.content = detailEntity.description + mViewModel.picList.postValue(detailEntity.images as MutableList?) + mViewModel.isManagerPatch = intent.getBooleanExtra(EntranceUtils.KEY_QUESTION_MANAGER_PATCH, false) + if (mViewModel.title.isNullOrEmpty()) mViewModel.title = detailEntity.title } else { // 新增问题 var searchKey = intent.getStringExtra(EntranceUtils.KEY_QUESTIONS_SEARCH_KEY) if (!searchKey.isNullOrEmpty() && searchKey.length > QuestionEditViewModel.QUESTION_TITLE_MAX_LENGTH) searchKey = searchKey.substring(0, QuestionEditViewModel.QUESTION_TITLE_MAX_LENGTH) - if (mViewModel?.title.isNullOrEmpty()) mViewModel?.title = searchKey + if (mViewModel.title.isNullOrEmpty()) mViewModel.title = searchKey } } // Navigation - if (mViewModel?.questionEntity != null) { - setNavigationTitle("编辑问题") - } else { - setNavigationTitle(UserManager.getInstance().community.name) + when { + mViewModel.isManagerPatch -> setNavigationTitle("修改问题") + mViewModel.questionEntity != null -> setNavigationTitle("编辑问题") + else -> setNavigationTitle(UserManager.getInstance().community.name) } - mViewModel?.getDefaultTag() + mViewModel.getDefaultTag() // TitleTip - if (mViewModel?.questionEntity == null) { - val titleTipAdapter = QuestionTitleTipAdapter(this, mBinding.questionseditTitle, mViewModel?.communityId) + if (mViewModel.questionEntity == null) { + val titleTipAdapter = QuestionTitleTipAdapter(this, mBinding.questionseditTitle, mViewModel.communityId) mBinding.questionseditTitle.setAdapter(titleTipAdapter) } @@ -127,7 +127,7 @@ class QuestionEditActivity : BaseActivity() { mBinding.questionseditContent.addTextChangedListener(LimitTextWatcher(mBinding.questionseditContent)) // Pic List - val picAdapter = QuestionsEditPicAdapter(this, mViewModel!!) + val picAdapter = QuestionsEditPicAdapter(this, mViewModel) mBinding.suggestPicRv.layoutManager = object : GridLayoutManager(this, 5) { override fun canScrollVertically(): Boolean { return false @@ -136,18 +136,18 @@ class QuestionEditActivity : BaseActivity() { mBinding.suggestPicRv.adapter = picAdapter // Process dialog - mViewModel?.processDialog?.observe(this, Observer { it -> + mViewModel.processDialog.observe(this, Observer { it -> if (it?.isShow!!) { if (mProcessingDialog != null && mProcessingDialog?.isVisible!!) { mProcessingDialog?.uploadWaitingHint(it.msg) } else { mProcessingDialog = WaitingDialogFragment.newInstance(it.msg, false) mProcessingDialog?.show(supportFragmentManager, null) { - if (mViewModel?.uploadImageSubscription != null && !mViewModel?.uploadImageSubscription!!.isDisposed) { + if (mViewModel.uploadImageSubscription != null && !mViewModel.uploadImageSubscription!!.isDisposed) { mUploadImageCancelDialog = DialogUtils.showAlertDialog(this, "提示" , "图片正在上传中,确定取消吗?" , "确定", "取消", { - mViewModel?.uploadImageSubscription!!.dispose() + mViewModel.uploadImageSubscription!!.dispose() mUploadImageCancelDialog?.dismiss() mProcessingDialog?.dismiss() }, null) @@ -160,31 +160,31 @@ class QuestionEditActivity : BaseActivity() { } }) - mViewModel?.titleTags?.observe(this, Observer> { + mViewModel.titleTags.observe(this, Observer> { if (supportFragmentManager.findFragmentByTag(TagsSelectFragment::javaClass.name) == null) { val dialog = BaseDialogWrapperFragment.getInstance(TagsSelectFragment.getInstance(), false) dialog.show(supportFragmentManager, TagsSelectFragment::javaClass.name) } }) - mViewModel?.picList?.observe(this, Observer { it -> + mViewModel.picList.observe(this, Observer { it -> if (it != null) picAdapter.notifyPicList(it) }) // 增加提问时, 如果searchKey不为空 光标跳到最后 mBaseHandler.postDelayed({ - if (mViewModel?.questionEntity == null) { + if (mViewModel.questionEntity == null) { mBinding.questionseditTitle.setSelection(mBinding.questionseditTitle.text.toString().length) } }, 50) } override fun onMenuItemClick(menuItem: MenuItem?): Boolean { - if (mViewModel!!.isManagerPatch) { - mViewModel?.selectedTags?.addAll(mViewModel?.questionEntity?.tags!!) + if (mViewModel.isManagerPatch) { + mViewModel.selectedTags.addAll(mViewModel.questionEntity?.tags!!) // todo 直接提交 } else { - mViewModel?.checkTitleAndLoadTitleTag() + mViewModel.checkTitleAndLoadTitleTag() } return false } @@ -232,13 +232,18 @@ class QuestionEditActivity : BaseActivity() { // 退出提示 override fun onBackPressed() { // 需要检查的内容,其中任意一个不为空都要打开提示弹窗 - val imgList = mViewModel?.picList?.value + val imgList = mViewModel.picList.value val title = mBinding.questionseditTitle.text.toString().trim() val content = mBinding.questionseditContent.text.toString().trim() - if (imgList != null && imgList.size > 0 || title.isNotEmpty() || content.isNotEmpty()) { + if (mViewModel.isManagerPatch) { DialogUtils.showCancelAlertDialog(this, "提示" - , if (mViewModel?.questionEntity == null) "确定放弃提问吗?" else "确定放弃编辑吗?" + , "确定退出修改?已编辑的内容将丢失" + , "继续编辑", " 退出", null) { finish() } + return + } else if (imgList != null && imgList.size > 0 || title.isNotEmpty() || content.isNotEmpty()) { + DialogUtils.showCancelAlertDialog(this, "提示" + , if (mViewModel.questionEntity == null) "确定放弃提问吗?" else "确定放弃编辑吗?" , "再想想", " 放弃", null) { finish() } return } diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/edit/TagsSelectFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/edit/TagsSelectFragment.kt index f0677fc155..cec673dbb8 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/edit/TagsSelectFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/edit/TagsSelectFragment.kt @@ -52,7 +52,8 @@ class TagsSelectFragment : BaseFragment() { private val mTagFl by bindView(R.id.questions_edit_tag) private val mAddTagBtn by bindView(R.id.questions_edit_tag_add) private val mPostBtn by bindView(R.id.questions_edit_tag_positive) - private val mCancelBtn by bindView(R.id.questions_edit_tag_cancel) + private val mCancelBtn by bindView(R.id.questions_edit_tag_cancel) + private val mTitle by bindView(R.id.questions_edit_tag_title) private var mViewModel: QuestionEditViewModel? = null @@ -75,6 +76,11 @@ class TagsSelectFragment : BaseFragment() { mViewModel?.questionEntity = arguments?.getParcelable(QuestionsDetailEntity::class.java.simpleName) } + if (mViewModel != null && mViewModel?.isManagerPatch!!) { + mCancelBtn.text = "取消" + mTitle.text = "修改标签" + } + initTags() mViewModel?.postLiveData?.observe(this, Observer { @@ -104,7 +110,12 @@ class TagsSelectFragment : BaseFragment() { } mPostBtn.setOnClickListener { - mViewModel?.postQuestion() + if (mViewModel?.isManagerPatch!! + && mViewModel?.questionEntity?.tags == mViewModel?.selectedTags) { + toast("标签没有变化") + } else { + mViewModel?.postQuestion() + } } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/edit/manager/HistoryAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/edit/manager/HistoryAdapter.kt index cf0ae8110a..5bb57b52da 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/edit/manager/HistoryAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/edit/manager/HistoryAdapter.kt @@ -2,12 +2,14 @@ package com.gh.gamecenter.qa.questions.edit.manager import android.content.Context import android.support.v7.widget.RecyclerView +import android.view.View import android.view.ViewGroup import com.gh.common.constant.ItemViewType import com.gh.gamecenter.R import com.gh.gamecenter.adapter.viewholder.FooterViewHolder import com.gh.gamecenter.baselist.ListAdapter import com.gh.gamecenter.baselist.NormalListViewModel +import com.gh.gamecenter.databinding.QuestionHistoryItemBinding import com.gh.gamecenter.qa.entity.QuestionsDetailEntity class HistoryAdapter(context: Context, @@ -22,8 +24,15 @@ class HistoryAdapter(context: Context, } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { - val view = mLayoutInflater . inflate (R.layout.refresh_footerview, parent, false) - return FooterViewHolder(view) + val view: View + return if (viewType == ItemViewType.ITEM_FOOTER) { + view = mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false) + FooterViewHolder(view) + } else { + view = mLayoutInflater.inflate(R.layout.question_history_item, parent, false) + HistoryItemViewHolder(QuestionHistoryItemBinding.bind(view)) + } + } override fun getItemCount(): Int = if (mEntityList.isEmpty()) 0 else mEntityList.size + TOP_ITEM_COUNT @@ -31,6 +40,8 @@ class HistoryAdapter(context: Context, override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { if (holder is FooterViewHolder) { holder.initFooterViewHolder(mViewModel, mIsLoading, mIsNetworkError, mIsOver) + } else if (holder is HistoryItemViewHolder) { + holder.binding.data = mEntityList[position] } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/edit/manager/HistoryItemViewHolder.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/edit/manager/HistoryItemViewHolder.kt new file mode 100644 index 0000000000..a858d0f79f --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/edit/manager/HistoryItemViewHolder.kt @@ -0,0 +1,6 @@ +package com.gh.gamecenter.qa.questions.edit.manager + +import com.gh.base.BaseRecyclerViewHolder +import com.gh.gamecenter.databinding.QuestionHistoryItemBinding + +class HistoryItemViewHolder(val binding: QuestionHistoryItemBinding) : BaseRecyclerViewHolder(binding.root) \ No newline at end of file diff --git a/app/src/main/res/layout/news_image2_item.xml b/app/src/main/res/layout/news_image2_item.xml index 70a8af8416..bb6a1b1328 100644 --- a/app/src/main/res/layout/news_image2_item.xml +++ b/app/src/main/res/layout/news_image2_item.xml @@ -29,22 +29,25 @@ + android:layout_width = "0dp" + android:layout_height = "66dp" + android:layout_weight = "1" /> + android:layout_marginLeft = "8dp" + android:layout_weight = "1" /> + android:layout_marginLeft = "8dp" + android:layout_weight = "1" /> diff --git a/app/src/main/res/layout/question_history_item.xml b/app/src/main/res/layout/question_history_item.xml index 01409b84bb..c87c82743c 100644 --- a/app/src/main/res/layout/question_history_item.xml +++ b/app/src/main/res/layout/question_history_item.xml @@ -1,6 +1,57 @@ - + - \ No newline at end of file + + + + + + + + + + + + + + +