From 1e2e8f932feae7bfa2bb9f6e38b76dc5ee8f9e1c Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Mon, 15 Apr 2019 18:03:45 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=96=E8=BE=91=E6=A1=86=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=8F=92=E5=85=A5=E6=B8=B8=E6=88=8F=E5=92=8C=E6=8F=92=E5=85=A5?= =?UTF-8?q?=E5=9B=9E=E7=AD=94=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 8 +++ .../com/gh/base/BaseRichEditorActivity.kt | 14 +++++- .../gh/common/view/DownloadProgressBar.java | 1 - .../gh/gamecenter/qa/editor/AnswerAdapter.kt | 49 +++++++++++++++++++ .../gh/gamecenter/qa/editor/AnswerFragment.kt | 29 +++++++++++ .../gh/gamecenter/qa/editor/GameActivity.kt | 45 +++++++++++++++++ .../gh/gamecenter/qa/editor/GameAdapter.kt | 43 ++++++++++++++++ .../qa/editor/InsertAnswerWrapperActivity.kt | 30 ++++++++++++ .../gh/gamecenter/qa/editor/LinkFragment.kt | 11 +++++ .../res/layout/editor_insert_container.xml | 5 +- app/src/main/res/layout/fragment_link.xml | 21 ++++++++ 11 files changed, 253 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/com/gh/gamecenter/qa/editor/AnswerAdapter.kt create mode 100644 app/src/main/java/com/gh/gamecenter/qa/editor/AnswerFragment.kt create mode 100644 app/src/main/java/com/gh/gamecenter/qa/editor/GameActivity.kt create mode 100644 app/src/main/java/com/gh/gamecenter/qa/editor/GameAdapter.kt create mode 100644 app/src/main/java/com/gh/gamecenter/qa/editor/InsertAnswerWrapperActivity.kt create mode 100644 app/src/main/java/com/gh/gamecenter/qa/editor/LinkFragment.kt create mode 100644 app/src/main/res/layout/fragment_link.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a4f42ec09a..2cbab80f40 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -369,6 +369,14 @@ android:name = "com.gh.gamecenter.qa.questions.edit.manager.HistoryActivity" android:screenOrientation = "portrait" /> + + + + { @@ -130,6 +133,15 @@ abstract class BaseRichEditorActivity : BaseActivity() { } mEditorParagraphQuote.isChecked = !mEditorParagraphQuote.isChecked } + R.id.editor_link_answer -> { + startActivity(InsertAnswerWrapperActivity.getIntent(this)) + } + R.id.editor_link_article -> { + + } + R.id.editor_link_game -> { + startActivity(GameActivity.getIntent(this)) + } } } diff --git a/app/src/main/java/com/gh/common/view/DownloadProgressBar.java b/app/src/main/java/com/gh/common/view/DownloadProgressBar.java index 6b12363c61..1ca3f46203 100644 --- a/app/src/main/java/com/gh/common/view/DownloadProgressBar.java +++ b/app/src/main/java/com/gh/common/view/DownloadProgressBar.java @@ -121,7 +121,6 @@ public class DownloadProgressBar extends ProgressBar { public void setText(@StringRes int res) { setText(getResources().getString(res)); - invalidate(); // 文字绘制没有同步 就重绘多几遍吧 虽然不知到有没有用 } public void setDownloadType(DownloadType downloadType) { diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerAdapter.kt new file mode 100644 index 0000000000..80a86f7853 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerAdapter.kt @@ -0,0 +1,49 @@ +package com.gh.gamecenter.qa.editor + +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.qa.entity.AnswerEntity +import com.gh.gamecenter.qa.questions.detail.AnswerViewHolder + +class AnswerAdapter(context: Context, private val mEntrance: String?) : ListAdapter(context) { + + override fun getItemViewType(position: Int): Int { + return if (position == itemCount - 1) ItemViewType.ITEM_FOOTER else ItemViewType.ITEM_BODY + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + val view: View + return when (viewType) { + ItemViewType.ITEM_FOOTER -> { + view = mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false) + FooterViewHolder(view) + } + ItemViewType.ITEM_BODY -> { + view = mLayoutInflater.inflate(R.layout.ask_answer_item, parent, false) + AnswerViewHolder(view) + } + else -> throw NullPointerException() + } + } + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + when (getItemViewType(position)) { + ItemViewType.ITEM_BODY -> (holder as AnswerViewHolder).initCollectionAnswerViewHolder(mEntityList[position], mEntrance) + ItemViewType.ITEM_FOOTER -> { + val footerViewHolder = holder as FooterViewHolder + footerViewHolder.initItemPadding() + footerViewHolder.initFooterViewHolder(mIsLoading, mIsNetworkError, mIsOver, R.string.ask_loadover_hint) + } + } + } + + override fun getItemCount(): Int { + return if (mEntityList == null || mEntityList.isEmpty()) 0 else mEntityList.size + ListAdapter.FOOTER_ITEM_COUNT + } +} diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerFragment.kt new file mode 100644 index 0000000000..50a2cea288 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerFragment.kt @@ -0,0 +1,29 @@ +package com.gh.gamecenter.qa.editor + +import android.arch.lifecycle.ViewModelProviders +import com.gh.gamecenter.baselist.ListFragment +import com.gh.gamecenter.baselist.NormalListViewModel +import com.gh.gamecenter.manager.UserManager +import com.gh.gamecenter.qa.entity.AnswerEntity +import com.gh.gamecenter.retrofit.RetrofitManager +import com.halo.assistant.HaloApp +import io.reactivex.Observable + +class AnswerFragment : ListFragment>() { + + private var mAdapter: AnswerAdapter? = null + + override fun provideListAdapter(): AnswerAdapter { + if (mAdapter == null) mAdapter = AnswerAdapter(context!!, mEntrance) + return mAdapter!! + } + + override fun provideDataObservable(page: Int): Observable>? { + return RetrofitManager.getInstance(context).api.getCollectionAnswer(UserManager.getInstance().userId, page) + } + + override fun provideListViewModel(): NormalListViewModel { + val factory = NormalListViewModel.Factory(HaloApp.getInstance().application, this) + return ViewModelProviders.of(this, factory).get(NormalListViewModel::class.java) as NormalListViewModel + } +} diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/GameActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/GameActivity.kt new file mode 100644 index 0000000000..82d21283c7 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/GameActivity.kt @@ -0,0 +1,45 @@ +package com.gh.gamecenter.qa.editor + +import android.arch.lifecycle.ViewModelProviders +import android.content.Context +import android.content.Intent +import android.os.Bundle +import com.gh.common.constant.Config +import com.gh.gamecenter.baselist.ListActivity +import com.gh.gamecenter.baselist.NormalListViewModel +import com.gh.gamecenter.entity.GameEntity +import com.gh.gamecenter.retrofit.RetrofitManager +import com.halo.assistant.HaloApp +import io.reactivex.Observable + +class GameActivity : ListActivity>() { + + private var mAdapter: GameAdapter? = null + private val mKey: String? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setNavigationTitle("插入游戏") + } + override fun provideListAdapter(): GameAdapter? { + if (mAdapter == null) { + mAdapter = GameAdapter(this) + } + return mAdapter + } + + override fun provideDataObservable(page: Int): Observable> { + return RetrofitManager.getInstance(this).api.getSearchGame(Config.API_HOST + "games:search?keyword=" + "少" + "&filter=view=digest") + } + + override fun provideListViewModel(): NormalListViewModel { + val factory = NormalListViewModel.Factory(HaloApp.getInstance().application, this) + return ViewModelProviders.of(this, factory).get(NormalListViewModel::class.java) as NormalListViewModel + } + + companion object { + fun getIntent(context: Context): Intent { + return Intent(context, GameActivity::class.java) + } + } +} diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/GameAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/GameAdapter.kt new file mode 100644 index 0000000000..f8ce804147 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/GameAdapter.kt @@ -0,0 +1,43 @@ +package com.gh.gamecenter.qa.editor + +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.ReuseViewHolder +import com.gh.gamecenter.baselist.ListAdapter +import com.gh.gamecenter.databinding.GameItemBinding +import com.gh.gamecenter.entity.GameEntity +import com.gh.gamecenter.game.GameItemViewHolder + +class GameAdapter(context: Context): ListAdapter(context) { + + override fun getItemViewType(position: Int): Int { + if (position == 0) { + return ItemViewType.ITEM_TOP + } + return ItemViewType.ITEM_BODY + } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + if (viewType == ItemViewType.ITEM_TOP) { + return ReuseViewHolder(mLayoutInflater.inflate(R.layout.layout_search_bar, parent, false)) + } + return GameItemViewHolder(GameItemBinding.bind(mLayoutInflater.inflate(R.layout.game_item, parent, false))) + } + + override fun getItemCount(): Int { + return mEntityList.size + 1 + } + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + if (holder is GameItemViewHolder) { + val entity = mEntityList[position-1] + holder.binding.game = entity + holder.binding.subjectTag = "type" + holder.binding.downloadBtn.visibility = View.GONE + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/InsertAnswerWrapperActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/InsertAnswerWrapperActivity.kt new file mode 100644 index 0000000000..88f42a40ad --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/InsertAnswerWrapperActivity.kt @@ -0,0 +1,30 @@ +package com.gh.gamecenter.qa.editor + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import android.support.v4.app.Fragment +import com.gh.base.BaseActivity_TabLayout + +class InsertAnswerWrapperActivity : BaseActivity_TabLayout() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setNavigationTitle("插入回答") + } + override fun initFragmentList(fragments: MutableList?) { + fragments?.add(LinkFragment()) + fragments?.add(AnswerFragment()) + } + + override fun initTabTitleList(tabTitleList: MutableList?) { + tabTitleList?.add("输入链接") + tabTitleList?.add("收藏回答") + } + + companion object { + fun getIntent(context: Context): Intent { + return Intent(context, InsertAnswerWrapperActivity::class.java) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/LinkFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/LinkFragment.kt new file mode 100644 index 0000000000..5155959e57 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/LinkFragment.kt @@ -0,0 +1,11 @@ +package com.gh.gamecenter.qa.editor + +import com.gh.base.fragment.BaseFragment +import com.gh.gamecenter.R + +class LinkFragment : BaseFragment() { + override fun getLayoutId(): Int { + return R.layout.fragment_link + } + +} \ No newline at end of file diff --git a/app/src/main/res/layout/editor_insert_container.xml b/app/src/main/res/layout/editor_insert_container.xml index faeb360aa3..ce6e915bea 100644 --- a/app/src/main/res/layout/editor_insert_container.xml +++ b/app/src/main/res/layout/editor_insert_container.xml @@ -80,6 +80,7 @@ android:orientation = "horizontal" > + android:visibility = "visible" /> + + + + + + + + + \ No newline at end of file