对接社区相关搜索接口

This commit is contained in:
kehaoyuan
2018-08-01 14:44:32 +08:00
parent cb07b8c9f4
commit 6c0ac67cfa
13 changed files with 115 additions and 30 deletions

View File

@ -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) {

View File

@ -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("...更多")

View File

@ -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()
}

View File

@ -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();

View File

@ -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);

View File

@ -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) }

View File

@ -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)
}
}
}

View File

@ -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) }

View File

@ -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)
}
}

View File

@ -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)
})
}

View File

@ -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)
}
}

View File

@ -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);
/**
* 搜索社区问题(编辑问题索引)