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 f4cf1d7894..98cc78838b 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,7 +35,9 @@ class ChooseForumActivity : BaseActivity() { switchUI(false) } else { switchUI(true) - mSearchResultFragment?.setSearchKey(binding.searchEt.text.toString()) + if (mSearchResultFragment != null && mSearchResultFragment?.isAdded == true) { + mSearchResultFragment?.setSearchKey(binding.searchEt.text.toString()) + } } } binding.closeIv.setOnClickListener { finish() } @@ -68,7 +70,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) as ChooseForumContainerFragment + ?: ChooseForumContainerFragment.getInstance(ChooseForumContainerFragment.ChooseForumType.SEARCH, binding.searchEt.text.toString()) 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 c96a5781af..91b96d2995 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 @@ -6,6 +6,7 @@ import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.gh.base.BaseRecyclerViewHolder +import com.gh.common.util.HtmlUtils import com.gh.common.util.MtaHelper import com.gh.common.util.goneIf import com.gh.gamecenter.baselist.ListAdapter @@ -30,7 +31,8 @@ class ChooseForumContainerAdapter(content: Context, val onSelectCallback: ((enti holder.binding.forumIcon.displayGameIcon(forumEntity.game.getIcon(), forumEntity.game.iconSubscript) holder.binding.followTv.visibility = View.GONE holder.itemView.setOnClickListener { - onSelectCallback?.invoke(CommunityEntity(forumEntity.id, forumEntity.name, game = forumEntity.game, icon = forumEntity.game.getIcon(), iconSubscript = forumEntity.game.iconSubscript)) + onSelectCallback?.invoke(CommunityEntity(forumEntity.id, HtmlUtils.stripHtml(forumEntity.name), + game = forumEntity.game, icon = forumEntity.game.getIcon(), iconSubscript = forumEntity.game.iconSubscript)) } } } 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 4f6407313b..012e2cbff8 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 @@ -16,9 +16,11 @@ class ChooseForumContainerFragment : ListFragment(application) { +class ChooseForumContainerViewModel(application: Application, val type: String, var searchKey: String) : ListViewModel(application) { private val mApi: ApiService = RetrofitManager.getInstance(getApplication()).api - override fun provideDataObservable(page: Int): Observable> { - return if (type == ChooseForumContainerFragment.ChooseForumType.ATTENTION.value) { - mApi.getFollowsForum(UserManager.getInstance().userId) - } else { - mApi.hotForum + init { + if (searchKey.isNotEmpty()) { + load(LoadType.REFRESH) } } + override fun provideDataObservable(page: Int): Observable> { + return when (type) { + ChooseForumContainerFragment.ChooseForumType.ATTENTION.value -> { + mApi.getFollowsForum(UserManager.getInstance().userId) + } + ChooseForumContainerFragment.ChooseForumType.HOT.value -> { + mApi.hotForum + } + else -> { + mApi.searchBbs(searchKey, page) + } + } + } + + fun setSearchKeyAndRefresh(searchKey: String) { + this.searchKey = searchKey + load(LoadType.REFRESH) + } override fun mergeResultLiveData() { mResultLiveData.addSource>(mListLiveData) { mResultLiveData.postValue(it) } } - class Factory(val type: String) : ViewModelProvider.NewInstanceFactory() { + class Factory(val type: String, val searchKey: String) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { - return ChooseForumContainerViewModel(HaloApp.getInstance().application, type) as T + return ChooseForumContainerViewModel(HaloApp.getInstance().application, type, searchKey) as T } } } \ No newline at end of file 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 dc671749ef..73e7c73cc9 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 @@ -2648,6 +2648,12 @@ public interface ApiService { @GET("./bbses:hot") Observable> getHotForum(); + /** + * 搜索论坛 + */ + @GET("./bbses:search_name") + Observable> searchBbs(@Query("keyword") String keyword, @Query("page") int page); + /** * 热门论坛列表 */ diff --git a/app/src/main/res/layout/forum_item.xml b/app/src/main/res/layout/forum_item.xml index c609e7b3ed..ee467695a9 100644 --- a/app/src/main/res/layout/forum_item.xml +++ b/app/src/main/res/layout/forum_item.xml @@ -6,6 +6,7 @@ +