对接社区相关搜索接口
This commit is contained in:
@ -85,6 +85,8 @@ public class EntranceUtils {
|
||||
public static final String KEY_SUBJECT_DATA = "subjectData";
|
||||
public static final String KEY_SHOW_SELECT_COMMUNITY = "show_select_community";
|
||||
public static final String KEY_USER_ID = "user_id";
|
||||
public static final String KEY_QUESTION_TAG = "question_tag";
|
||||
public static final String KEY_COLUMN_ID = "column_id";
|
||||
|
||||
public static void jumpActivity(Context context, Bundle bundle) {
|
||||
|
||||
|
||||
@ -38,6 +38,9 @@ class AskColumnDetailActivity : BaseActivity() {
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
val columnEntity = intent.getParcelableExtra<AskTagGroupsEntity>(EntranceUtils.KEY_ASK_COLUMN_TAG)
|
||||
val questionTag = intent.getStringExtra(EntranceUtils.KEY_ASK_TAG)
|
||||
// if (!questionTag.isNullOrEmpty()) setNavigationTitle(questionTag)
|
||||
|
||||
// init SearchBar
|
||||
mBarBack.setOnClickListener { finish() }
|
||||
@ -45,11 +48,13 @@ class AskColumnDetailActivity : BaseActivity() {
|
||||
mBarQuestionBtn.layoutParams = LinearLayout.LayoutParams(DisplayUtils.dip2px(20F), ViewGroup.LayoutParams.MATCH_PARENT)
|
||||
mBarSearchEdit.hint = "专栏内搜索..."
|
||||
mBarSearchEdit.isFocusable = false
|
||||
mBarSearchEdit.setOnClickListener({ startActivity(AskSearchActivity.getIntent(this)) })
|
||||
|
||||
val columnEntity = intent.getParcelableExtra<AskTagGroupsEntity>(EntranceUtils.KEY_ASK_COLUMN_TAG)
|
||||
val questionTag = intent.getStringExtra(EntranceUtils.KEY_ASK_TAG)
|
||||
// if (!questionTag.isNullOrEmpty()) setNavigationTitle(questionTag)
|
||||
mBarSearchEdit.setOnClickListener({
|
||||
if (!questionTag.isNullOrEmpty()) {
|
||||
startActivity(AskSearchActivity.getQuestionTagSearchIntent(this, questionTag))
|
||||
} else {
|
||||
startActivity(AskSearchActivity.getColumnSearchIntent(this, columnEntity.id))
|
||||
}
|
||||
})
|
||||
|
||||
mBinding = ActivityAskColumnDetailBinding.bind(mContentView)
|
||||
mBinding?.columnDetailDes?.setExpendText("...更多")
|
||||
|
||||
@ -15,4 +15,10 @@ class AskSearchEntity {
|
||||
@SerializedName("question")
|
||||
var questions: Questions = Questions()
|
||||
|
||||
var vote: Int = 0
|
||||
|
||||
@SerializedName("comment_count")
|
||||
var commentCount = 0
|
||||
|
||||
var images: List<String> = ArrayList()
|
||||
}
|
||||
@ -17,6 +17,7 @@ import android.widget.TextView;
|
||||
import com.gh.base.BaseActivity;
|
||||
import com.gh.common.util.AskLogUtils;
|
||||
import com.gh.common.util.CheckLoginUtils;
|
||||
import com.gh.common.util.EntranceUtils;
|
||||
import com.gh.gamecenter.R;
|
||||
import com.gh.gamecenter.qa.questions.edit.QuestionEditActivity;
|
||||
import com.lightgame.utils.Util_System_Keyboard;
|
||||
@ -51,6 +52,18 @@ public class AskSearchActivity extends BaseActivity {
|
||||
return new Intent(context, AskSearchActivity.class);
|
||||
}
|
||||
|
||||
public static Intent getQuestionTagSearchIntent(Context context, String questionTag) {
|
||||
Intent intent = new Intent(context, AskSearchActivity.class);
|
||||
intent.putExtra(EntranceUtils.KEY_QUESTION_TAG, questionTag);
|
||||
return intent;
|
||||
}
|
||||
|
||||
public static Intent getColumnSearchIntent(Context context, String columnId) {
|
||||
Intent intent = new Intent(context, AskSearchActivity.class);
|
||||
intent.putExtra(EntranceUtils.KEY_COLUMN_ID, columnId);
|
||||
return intent;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleMessage(Message msg) {
|
||||
if (msg.what == 1) {
|
||||
@ -70,6 +83,10 @@ public class AskSearchActivity extends BaseActivity {
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
mAskAskSearchFragment = new AskSearchFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putString(EntranceUtils.KEY_COLUMN_ID, getIntent().getStringExtra(EntranceUtils.KEY_COLUMN_ID));
|
||||
args.putString(EntranceUtils.KEY_QUESTION_TAG, getIntent().getStringExtra(EntranceUtils.KEY_QUESTION_TAG));
|
||||
mAskAskSearchFragment.setArguments(args);
|
||||
getSupportFragmentManager().beginTransaction().replace(
|
||||
R.id.layout_fragment_content, mAskAskSearchFragment).commitAllowingStateLoss();
|
||||
|
||||
|
||||
@ -3,6 +3,7 @@ package com.gh.gamecenter.qa.search;
|
||||
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.gamecenter.R;
|
||||
@ -20,8 +21,13 @@ public class AskSearchNormalItemViewHolder extends BaseRecyclerViewHolder<AskSea
|
||||
public TextView mTitle;
|
||||
@BindView(R.id.ask_search_item_content)
|
||||
public TextView mContent;
|
||||
@BindView(R.id.ask_search_item_answercount)
|
||||
public TextView mAnswercount;
|
||||
@BindView(R.id.ask_search_item_commentcount)
|
||||
public TextView mCommentCount;
|
||||
@BindView(R.id.ask_search_item_image)
|
||||
public SimpleDraweeView mImage;
|
||||
@BindView(R.id.ask_search_item_votecount)
|
||||
public TextView mVoteCount;
|
||||
|
||||
|
||||
public AskSearchNormalItemViewHolder(View itemView, OnListClickListener listClickListener) {
|
||||
super(itemView, listClickListener);
|
||||
|
||||
@ -6,6 +6,7 @@ import android.text.Html
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import com.gh.common.constant.ItemViewType
|
||||
import com.gh.common.util.ImageUtils
|
||||
import com.gh.gamecenter.R
|
||||
import com.gh.gamecenter.adapter.viewholder.FooterViewHolder
|
||||
import com.gh.gamecenter.qa.entity.AskSearchEntity
|
||||
@ -33,8 +34,14 @@ class HottestAdapter(context: Context) : BaseAskSearchAdapter<AskSearchEntity>(c
|
||||
val searchEntity = mEntityList[position]
|
||||
val askHolder = holder as AskSearchNormalItemViewHolder
|
||||
val questions = searchEntity.questions
|
||||
askHolder.setClickData(searchEntity)
|
||||
askHolder.mAnswercount.text = mContext.getString(R.string.ask_answer_count, questions.answerCount)
|
||||
if (searchEntity.images.isNotEmpty()) {
|
||||
askHolder.mImage.visibility = View.VISIBLE
|
||||
ImageUtils.display(askHolder.mImage, searchEntity.images[0])
|
||||
} else {
|
||||
askHolder.mImage.visibility = View.GONE
|
||||
}
|
||||
askHolder.mCommentCount.text = mContext.getString(R.string.ask_answer_count, questions.answerCount)
|
||||
askHolder.mVoteCount.text = mContext.getString(R.string.ask_vote_count, searchEntity.vote.toString())
|
||||
askHolder.mTitle.text = Html.fromHtml(replayKeyword(questions.title))
|
||||
askHolder.mContent.text = Html.fromHtml(replayKeyword(searchEntity.brief))
|
||||
askHolder.mTitle.setOnClickListener { skipQuestionDetail(questions) }
|
||||
|
||||
@ -2,6 +2,7 @@ package com.gh.gamecenter.qa.search.hottest
|
||||
|
||||
import android.arch.lifecycle.ViewModelProviders
|
||||
import android.text.TextUtils
|
||||
import com.gh.common.util.EntranceUtils
|
||||
import com.gh.common.util.UrlFilterUtils
|
||||
import com.gh.gamecenter.baselist.NormalListViewModel
|
||||
import com.gh.gamecenter.manager.UserManager
|
||||
@ -28,8 +29,19 @@ class HottestFragment : BaseAskSearchFragment<AskSearchEntity, NormalListViewMod
|
||||
}
|
||||
|
||||
override fun provideDataObservable(page: Int): Observable<List<AskSearchEntity>>? {
|
||||
val questionTag = activity?.intent?.getStringExtra(EntranceUtils.KEY_QUESTION_TAG)
|
||||
val columnId = activity?.intent?.getStringExtra(EntranceUtils.KEY_COLUMN_ID)
|
||||
val api = RetrofitManager.getInstance(context).api
|
||||
return if (TextUtils.isEmpty(mSearchKey)) null
|
||||
else RetrofitManager.getInstance(context).api.getAskSearch(UserManager.getInstance().community.id,
|
||||
UrlFilterUtils.getFilterQuery("keyword", mSearchKey), page)// TODO 更换正式接口
|
||||
else if (!questionTag.isNullOrEmpty()) {
|
||||
api.getAskSearch(UserManager.getInstance().community.id,
|
||||
UrlFilterUtils.getFilterQuery("keyword", mSearchKey, "question_tag", questionTag), "answer_vote", page)
|
||||
} else if (!columnId.isNullOrEmpty()) {
|
||||
api.getAskSearch(UserManager.getInstance().community.id,
|
||||
UrlFilterUtils.getFilterQuery("keyword", mSearchKey, "column_id", columnId), "answer_vote", page)
|
||||
} else {
|
||||
api.getAskSearch(UserManager.getInstance().community.id,
|
||||
UrlFilterUtils.getFilterQuery("keyword", mSearchKey), "answer_vote", page)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -6,6 +6,7 @@ import android.text.Html
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import com.gh.common.constant.ItemViewType
|
||||
import com.gh.common.util.ImageUtils
|
||||
import com.gh.gamecenter.R
|
||||
import com.gh.gamecenter.adapter.viewholder.FooterViewHolder
|
||||
import com.gh.gamecenter.qa.entity.AskSearchEntity
|
||||
@ -33,8 +34,14 @@ class NewestAdapter(context: Context) : BaseAskSearchAdapter<AskSearchEntity>(co
|
||||
val searchEntity = mEntityList[position]
|
||||
val askHolder = holder as AskSearchNormalItemViewHolder
|
||||
val questions = searchEntity.questions
|
||||
askHolder.setClickData(searchEntity)
|
||||
askHolder.mAnswercount.text = mContext.getString(R.string.ask_answer_count, questions.answerCount)
|
||||
if (searchEntity.images.isNotEmpty()) {
|
||||
askHolder.mImage.visibility = View.VISIBLE
|
||||
ImageUtils.display(askHolder.mImage, searchEntity.images[0])
|
||||
} else {
|
||||
askHolder.mImage.visibility = View.GONE
|
||||
}
|
||||
askHolder.mCommentCount.text = mContext.getString(R.string.ask_answer_count, questions.answerCount)
|
||||
askHolder.mVoteCount.text = mContext.getString(R.string.ask_vote_count, searchEntity.vote.toString())
|
||||
askHolder.mTitle.text = Html.fromHtml(replayKeyword(questions.title))
|
||||
askHolder.mContent.text = Html.fromHtml(replayKeyword(searchEntity.brief))
|
||||
askHolder.mTitle.setOnClickListener { skipQuestionDetail(questions) }
|
||||
|
||||
@ -2,6 +2,7 @@ package com.gh.gamecenter.qa.search.newest
|
||||
|
||||
import android.arch.lifecycle.ViewModelProviders
|
||||
import android.text.TextUtils
|
||||
import com.gh.common.util.EntranceUtils
|
||||
import com.gh.common.util.UrlFilterUtils
|
||||
import com.gh.gamecenter.baselist.NormalListViewModel
|
||||
import com.gh.gamecenter.manager.UserManager
|
||||
@ -28,8 +29,17 @@ class NewestFragment : BaseAskSearchFragment<AskSearchEntity, NormalListViewMode
|
||||
}
|
||||
|
||||
override fun provideDataObservable(page: Int): Observable<List<AskSearchEntity>>? {
|
||||
val questionTag = activity?.intent?.getStringExtra(EntranceUtils.KEY_QUESTION_TAG)
|
||||
val columnId = activity?.intent?.getStringExtra(EntranceUtils.KEY_COLUMN_ID)
|
||||
val api = RetrofitManager.getInstance(context).api
|
||||
return if (TextUtils.isEmpty(mSearchKey)) null
|
||||
else RetrofitManager.getInstance(context).api.getAskSearch(UserManager.getInstance().community.id,
|
||||
UrlFilterUtils.getFilterQuery("keyword", mSearchKey), page)// TODO 更换正式接口
|
||||
else if (!questionTag.isNullOrEmpty()) {
|
||||
api.getAskSearch(UserManager.getInstance().community.id,
|
||||
UrlFilterUtils.getFilterQuery("keyword", mSearchKey, "question_tag", questionTag), "answer_time", page)
|
||||
} else if (!columnId.isNullOrEmpty()) {
|
||||
api.getAskSearch(UserManager.getInstance().community.id,
|
||||
UrlFilterUtils.getFilterQuery("keyword", mSearchKey, "column_id", columnId), "answer_time", page)
|
||||
} else api.getAskSearch(UserManager.getInstance().community.id,
|
||||
UrlFilterUtils.getFilterQuery("keyword", mSearchKey), "answer_time", page)
|
||||
}
|
||||
}
|
||||
|
||||
@ -9,12 +9,12 @@ 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.qa.entity.AskSearchEntity
|
||||
import com.gh.gamecenter.qa.entity.Questions
|
||||
import com.gh.gamecenter.qa.entity.QuestionsIndexEntity
|
||||
import com.gh.gamecenter.qa.search.AskSearchQuestionItemViewHolder
|
||||
import com.gh.gamecenter.qa.search.base.BaseAskSearchAdapter
|
||||
|
||||
class QuestionAdapter(context: Context) : BaseAskSearchAdapter<QuestionsIndexEntity>(context) {
|
||||
class QuestionAdapter(context: Context) : BaseAskSearchAdapter<AskSearchEntity>(context) {
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
|
||||
val view: View
|
||||
@ -35,13 +35,13 @@ class QuestionAdapter(context: Context) : BaseAskSearchAdapter<QuestionsIndexEnt
|
||||
ItemViewType.ITEM_BODY -> {
|
||||
val viewHolder = holder as AskSearchQuestionItemViewHolder
|
||||
val entity = mEntityList[position]
|
||||
viewHolder.binding.entity = entity
|
||||
viewHolder.binding.questionsEditIndexTitle.text = Html.fromHtml(replayKeyword(entity.title))
|
||||
viewHolder.binding.questionsEditIndexTitle.text = Html.fromHtml(replayKeyword(entity.questions.title))
|
||||
viewHolder.binding.questionsEditIndexAnswerCount.text = (entity.questions.answerCount.toString() + " 回答")
|
||||
viewHolder.binding.questionsEditIndexLine.visibility = View.INVISIBLE
|
||||
viewHolder.itemView.setOnClickListener({
|
||||
val questions = Questions()
|
||||
questions.id = entity.id
|
||||
questions.title = entity.title
|
||||
questions.id = entity.questions.id
|
||||
questions.title = entity.questions.title
|
||||
skipQuestionDetail(questions)
|
||||
})
|
||||
}
|
||||
|
||||
@ -2,16 +2,17 @@ package com.gh.gamecenter.qa.search.question
|
||||
|
||||
import android.arch.lifecycle.ViewModelProviders
|
||||
import android.text.TextUtils
|
||||
import com.gh.common.util.EntranceUtils
|
||||
import com.gh.common.util.UrlFilterUtils
|
||||
import com.gh.gamecenter.baselist.NormalListViewModel
|
||||
import com.gh.gamecenter.manager.UserManager
|
||||
import com.gh.gamecenter.qa.entity.QuestionsIndexEntity
|
||||
import com.gh.gamecenter.qa.entity.AskSearchEntity
|
||||
import com.gh.gamecenter.qa.search.base.BaseAskSearchFragment
|
||||
import com.gh.gamecenter.retrofit.RetrofitManager
|
||||
import com.halo.assistant.HaloApp
|
||||
import io.reactivex.Observable
|
||||
|
||||
class QuestionFragment : BaseAskSearchFragment<QuestionsIndexEntity, NormalListViewModel<QuestionsIndexEntity>>() {
|
||||
class QuestionFragment : BaseAskSearchFragment<AskSearchEntity, NormalListViewModel<AskSearchEntity>>() {
|
||||
|
||||
private var mAdapter: QuestionAdapter? = null
|
||||
|
||||
@ -22,14 +23,23 @@ class QuestionFragment : BaseAskSearchFragment<QuestionsIndexEntity, NormalListV
|
||||
return mAdapter!!
|
||||
}
|
||||
|
||||
override fun provideListViewModel(): NormalListViewModel<QuestionsIndexEntity> {
|
||||
override fun provideListViewModel(): NormalListViewModel<AskSearchEntity> {
|
||||
val factory = NormalListViewModel.Factory(HaloApp.getInstance().application, this)
|
||||
return ViewModelProviders.of(this, factory).get(NormalListViewModel::class.java) as NormalListViewModel<QuestionsIndexEntity>
|
||||
return ViewModelProviders.of(this, factory).get(NormalListViewModel::class.java) as NormalListViewModel<AskSearchEntity>
|
||||
}
|
||||
|
||||
override fun provideDataObservable(page: Int): Observable<List<QuestionsIndexEntity>>? {
|
||||
override fun provideDataObservable(page: Int): Observable<List<AskSearchEntity>>? {
|
||||
val questionTag = activity?.intent?.getStringExtra(EntranceUtils.KEY_QUESTION_TAG)
|
||||
val columnId = activity?.intent?.getStringExtra(EntranceUtils.KEY_COLUMN_ID)
|
||||
val api = RetrofitManager.getInstance(context).api
|
||||
return if (TextUtils.isEmpty(mSearchKey)) null
|
||||
else RetrofitManager.getInstance(context).api.getAskSearchByTitle(UserManager.getInstance().community.id,
|
||||
UrlFilterUtils.getFilterQuery("keyword", mSearchKey), 1) // TODO 更换正式接口
|
||||
else if (!questionTag.isNullOrEmpty()) {
|
||||
api.getAskSearch(UserManager.getInstance().community.id,
|
||||
UrlFilterUtils.getFilterQuery("keyword", mSearchKey, "question_tag", questionTag, "type", "question"), "question_time", page)
|
||||
} else if (!columnId.isNullOrEmpty()) {
|
||||
api.getAskSearch(UserManager.getInstance().community.id,
|
||||
UrlFilterUtils.getFilterQuery("keyword", mSearchKey, "column_id", columnId, "type", "question"), "question_time", page)
|
||||
} else api.getAskSearch(UserManager.getInstance().community.id,
|
||||
UrlFilterUtils.getFilterQuery("keyword", mSearchKey, "type", "question"), "question_time", 1)
|
||||
}
|
||||
}
|
||||
|
||||
@ -730,7 +730,10 @@ public interface ApiService {
|
||||
* 搜索社区问题
|
||||
*/
|
||||
@GET("communities/{community_id}:search")
|
||||
Observable<List<AskSearchEntity>> getAskSearch(@Path("community_id") String communityId, @Query("filter") String filter, @Query("page") int page);
|
||||
Observable<List<AskSearchEntity>> getAskSearch(@Path("community_id") String communityId,
|
||||
@Query("filter") String filter,
|
||||
@Query("sort") String sort,
|
||||
@Query("page") int page);
|
||||
|
||||
/**
|
||||
* 搜索社区问题(编辑问题索引)
|
||||
|
||||
Reference in New Issue
Block a user