diff --git a/app/src/main/java/com/gh/gamecenter/forum/search/ForumOrUserSearchFragment.kt b/app/src/main/java/com/gh/gamecenter/forum/search/ForumOrUserSearchFragment.kt index 5252a4def9..ea4ffa1792 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/search/ForumOrUserSearchFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/search/ForumOrUserSearchFragment.kt @@ -7,17 +7,20 @@ import android.widget.RelativeLayout import androidx.fragment.app.Fragment import com.gh.base.fragment.BaseFragment_TabLayout import com.gh.common.util.dip2px +import com.gh.gamecenter.qa.dialog.ChooseForumContainerFragment import com.google.android.material.tabs.TabLayout class ForumOrUserSearchFragment : BaseFragment_TabLayout() { private var mSearchKey = "" override fun initFragmentList(fragments: MutableList) { + fragments.add(ChooseForumContainerFragment.getInstance(ChooseForumContainerFragment.ChooseForumType.SEARCH)) fragments.add(ForumContentSearchListFragment()) fragments.add(UserSearchListFragment()) } override fun initTabTitleList(tabTitleList: MutableList) { + tabTitleList.add("论坛") tabTitleList.add("内容") tabTitleList.add("用户") } @@ -31,6 +34,9 @@ class ForumOrUserSearchFragment : BaseFragment_TabLayout() { private fun setSearchKeyToChildFragment() { mFragmentsList.forEach { + if (it is ChooseForumContainerFragment) { + it.setSearchKey(mSearchKey) + } if (it is ForumContentSearchListFragment) { it.setSearchKey(mSearchKey) } diff --git a/app/src/main/java/com/gh/gamecenter/qa/dialog/ChooseForumActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/dialog/ChooseForumActivity.kt index 98cc78838b..f4cf1d7894 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/dialog/ChooseForumActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/dialog/ChooseForumActivity.kt @@ -35,9 +35,7 @@ class ChooseForumActivity : BaseActivity() { switchUI(false) } else { switchUI(true) - if (mSearchResultFragment != null && mSearchResultFragment?.isAdded == true) { - mSearchResultFragment?.setSearchKey(binding.searchEt.text.toString()) - } + mSearchResultFragment?.setSearchKey(binding.searchEt.text.toString()) } } binding.closeIv.setOnClickListener { finish() } @@ -70,7 +68,7 @@ class ChooseForumActivity : BaseActivity() { if (mSearchResultFragment == null || mSearchResultFragment?.isAdded == false) { val beginTransaction = supportFragmentManager.beginTransaction() mSearchResultFragment = supportFragmentManager.findFragmentByTag(ChooseForumContainerFragment::class.java.simpleName) as? ChooseForumContainerFragment - ?: ChooseForumContainerFragment.getInstance(ChooseForumContainerFragment.ChooseForumType.SEARCH, binding.searchEt.text.toString()) as ChooseForumContainerFragment + ?: ChooseForumContainerFragment.getInstance(ChooseForumContainerFragment.ChooseForumType.SEARCH) as ChooseForumContainerFragment beginTransaction.replace(binding.searchResultContainer.id, mSearchResultFragment!!, ChooseForumContainerFragment::class.java.simpleName) beginTransaction.commitAllowingStateLoss() } diff --git a/app/src/main/java/com/gh/gamecenter/qa/dialog/ChooseForumContainerAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/dialog/ChooseForumContainerAdapter.kt index 91b96d2995..5e7006e5ae 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/dialog/ChooseForumContainerAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/dialog/ChooseForumContainerAdapter.kt @@ -4,11 +4,15 @@ import android.content.Context import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView import com.gh.base.BaseRecyclerViewHolder +import com.gh.common.constant.ItemViewType import com.gh.common.util.HtmlUtils import com.gh.common.util.MtaHelper import com.gh.common.util.goneIf +import com.gh.gamecenter.R +import com.gh.gamecenter.adapter.viewholder.FooterViewHolder import com.gh.gamecenter.baselist.ListAdapter import com.gh.gamecenter.databinding.ForumItemBinding import com.gh.gamecenter.entity.CommunityEntity @@ -16,13 +20,38 @@ import com.gh.gamecenter.entity.ForumEntity import com.gh.gamecenter.forum.detail.ForumDetailActivity import com.gh.gamecenter.qa.entity.CommunitySelectEntity -class ChooseForumContainerAdapter(content: Context, val onSelectCallback: ((entity: CommunityEntity) -> Unit)? = null) : ListAdapter(content) { +class ChooseForumContainerAdapter(content: Context, val type: String, val onSelectCallback: ((entity: CommunityEntity) -> Unit)? = null) : ListAdapter(content) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { - return ForumItemViewHolder(ForumItemBinding.inflate(LayoutInflater.from(mContext), parent, false)) + return when (viewType) { + ItemViewType.ITEM_FOOTER -> { + FooterViewHolder(mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false)) + } + else -> { + ForumItemViewHolder(ForumItemBinding.inflate(LayoutInflater.from(mContext), parent, false)) + } + } } - override fun getItemCount(): Int = mEntityList.size + override fun getItemCount(): Int { + return if (mEntityList.isNotEmpty()) { + if (type == ChooseForumContainerFragment.ChooseForumType.SEARCH.value) { + mEntityList.size + FOOTER_ITEM_COUNT + } else { + mEntityList.size + } + } else 0 + } + + override fun getItemViewType(position: Int): Int { + if (type == ChooseForumContainerFragment.ChooseForumType.SEARCH.value) { + if (position == itemCount - 1) return ItemViewType.ITEM_FOOTER + return ItemViewType.ITEM_BODY + } else { + return ItemViewType.ITEM_BODY + } + + } override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { if (holder is ForumItemViewHolder) { @@ -34,6 +63,11 @@ class ChooseForumContainerAdapter(content: Context, val onSelectCallback: ((enti onSelectCallback?.invoke(CommunityEntity(forumEntity.id, HtmlUtils.stripHtml(forumEntity.name), game = forumEntity.game, icon = forumEntity.game.getIcon(), iconSubscript = forumEntity.game.iconSubscript)) } + } else if (holder is FooterViewHolder) { + holder.initItemPadding() + holder.initFooterViewHolder(mIsLoading, mIsNetworkError, mIsOver) + holder.hint.textSize = 12f + holder.hint.setTextColor(ContextCompat.getColor(mContext, R.color.aaaaaa)) } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/dialog/ChooseForumContainerFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/dialog/ChooseForumContainerFragment.kt index 012e2cbff8..ea9aa42ce6 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/dialog/ChooseForumContainerFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/dialog/ChooseForumContainerFragment.kt @@ -11,25 +11,27 @@ import com.gh.gamecenter.baselist.ListAdapter import com.gh.gamecenter.baselist.ListFragment import com.gh.gamecenter.entity.CommunityEntity import com.gh.gamecenter.entity.ForumEntity +import com.gh.gamecenter.forum.detail.ForumDetailActivity class ChooseForumContainerFragment : ListFragment() { private var mAdapter: ChooseForumContainerAdapter? = null private var type: String = "" - private var searchKey: String = "" + private var mSearchKey: String = "" override fun onCreate(savedInstanceState: Bundle?) { type = arguments?.getString(EntranceUtils.KEY_CHOOSE_FORUM_TYPE) ?: "" - searchKey = arguments?.getString(EntranceUtils.KEY_SEARCHKEY) ?: "" super.onCreate(savedInstanceState) } override fun shouldLoadMore(): Boolean = false override fun provideListAdapter(): ListAdapter<*> { - return mAdapter ?: ChooseForumContainerAdapter(requireContext()) { + return mAdapter ?: ChooseForumContainerAdapter(requireContext(), type) { if (requireActivity() is ChooseForumActivity) { (requireActivity() as ChooseForumActivity).chooseSuccess(it) + } else { + requireActivity().startActivity(ForumDetailActivity.getIntent(requireContext(), it.id, "搜索论坛")) } }.apply { mAdapter = this @@ -37,20 +39,28 @@ class ChooseForumContainerFragment : ListFragment(application) { private val mApi: ApiService = RetrofitManager.getInstance(getApplication()).api + init { - if (searchKey.isNotEmpty()) { + if (type != ChooseForumContainerFragment.ChooseForumType.SEARCH.value) { load(LoadType.REFRESH) } } + override fun provideDataObservable(page: Int): Observable> { return when (type) { ChooseForumContainerFragment.ChooseForumType.ATTENTION.value -> { diff --git a/app/src/main/res/layout/forum_item.xml b/app/src/main/res/layout/forum_item.xml index ee467695a9..414b734340 100644 --- a/app/src/main/res/layout/forum_item.xml +++ b/app/src/main/res/layout/forum_item.xml @@ -1,18 +1,18 @@ - + - - + + + android:layout_height="44dp" />