diff --git a/app/src/main/java/com/gh/common/util/UploadImageUtils.kt b/app/src/main/java/com/gh/common/util/UploadImageUtils.kt index da81eaf3b2..fad87628a3 100644 --- a/app/src/main/java/com/gh/common/util/UploadImageUtils.kt +++ b/app/src/main/java/com/gh/common/util/UploadImageUtils.kt @@ -104,7 +104,7 @@ object UploadImageUtils { @SuppressLint("CheckResult") fun compressAndUploadImageList(type: UploadType, imgs: List, compressGif: Boolean, listener: OnUploadImageListListener): Disposable? { var subscription: Disposable? = null - val postImageList = HashMap() + val postImageList = LinkedHashMap() Observable.create(ObservableOnSubscribe> { val compressList = compressImageList(imgs, compressGif) @@ -132,7 +132,7 @@ object UploadImageUtils { if (!string.isNullOrEmpty()) { val url = JSONObject(string).getString("url") if (!url.isNullOrEmpty()) { - val map = HashMap() + val map = LinkedHashMap() map[img.path] = url it.onNext(map) return @@ -209,7 +209,7 @@ object UploadImageUtils { } interface OnUploadImageListListener { - fun onSuccess(imageUrl: Map) // key:sourceImage value:compressImage + fun onSuccess(imageUrl: LinkedHashMap) // key:sourceImage value:compressImage fun onError() // 全部上传失败时回调 fun onProgress(total: Long, progress: Long) } diff --git a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java index 21002b6bd3..ad56f30bd9 100644 --- a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java @@ -76,6 +76,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -612,7 +613,7 @@ public class SuggestionActivity extends BaseActivity implements OnRequestCallBac } @Override - public void onSuccess(@NotNull Map imageUrl) { + public void onSuccess(@NotNull LinkedHashMap imageUrl) { Utils.log("意见反馈:图片上传完成"); final JSONArray picArray = new JSONArray(); for (String s : imageUrl.keySet()) { diff --git a/app/src/main/java/com/gh/gamecenter/baselist/ListViewModel.java b/app/src/main/java/com/gh/gamecenter/baselist/ListViewModel.java index fbe8eca86d..bd4ae30545 100644 --- a/app/src/main/java/com/gh/gamecenter/baselist/ListViewModel.java +++ b/app/src/main/java/com/gh/gamecenter/baselist/ListViewModel.java @@ -71,6 +71,7 @@ public abstract class ListViewModel extends Ba listObservable .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) + .map(this::filterData) .subscribe(new Response>() { @Override public void onResponse(List response) { @@ -108,6 +109,7 @@ public abstract class ListViewModel extends Ba } else if (listSingle != null) { listSingle.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) + .map(this::filterData) .subscribe(new BiResponse>() { @Override public void onFailure(@NotNull Exception exception) { @@ -205,4 +207,8 @@ public abstract class ListViewModel extends Ba public MutableLiveData getLoadExceptionLiveData() { return mLoadExceptionLiveData; } + + protected List filterData(@NonNull List list) { + return list; + } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditViewModel.kt index 4bef6f2050..bc6e666b94 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditViewModel.kt @@ -47,7 +47,7 @@ class AnswerEditViewModel(application: Application, val processDialog = MediatorLiveData() val postLiveData = MediatorLiveData>() - val postImageLiveData = MediatorLiveData>>() + val postImageLiveData = MediatorLiveData>>() val deleteDraftLiveDate = MediatorLiveData() val draftsLiveData = MediatorLiveData() val saveDraftsLiveData = MediatorLiveData() // 自动保存不会回调 @@ -138,7 +138,7 @@ class AnswerEditViewModel(application: Application, processDialog.postValue(WaitingDialogFragment.WaitingDialogData("图片上传中 $percent%", true)) } - override fun onSuccess(imageUrl: Map) { + override fun onSuccess(imageUrl: LinkedHashMap) { processDialog.postValue(WaitingDialogFragment.WaitingDialogData("上传中...", false)) postImageLiveData.postValue(Resource.success(imageUrl)) } diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleEditViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleEditViewModel.kt index 9fbd6095c7..8951d167e7 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleEditViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleEditViewModel.kt @@ -42,7 +42,7 @@ class ArticleEditViewModel(application: Application) : AndroidViewModel(applicat val MIN_ARTICLE_TEXT_LENGTH = 6 val processDialog = MediatorLiveData() - val postImageLiveData = MediatorLiveData>>() + val postImageLiveData = MediatorLiveData>>() val postArticle = MediatorLiveData() val postArticleDrafts = MediatorLiveData() val articleDraftsContent = MediatorLiveData() @@ -169,20 +169,15 @@ class ArticleEditViewModel(application: Application) : AndroidViewModel(applicat processDialog.postValue(WaitingDialogFragment.WaitingDialogData("图片上传中 $percent%", true)) } - override fun onSuccess(imageUrl: Map) { + override fun onSuccess(imageUrl: LinkedHashMap) { processDialog.postValue(WaitingDialogFragment.WaitingDialogData("上传中...", false)) postImageLiveData.postValue(Resource.success(imageUrl)) } - override fun onError() { // todo 失败提示?????? + override fun onError() { processDialog.postValue(WaitingDialogFragment.WaitingDialogData("上传中...", false)) Utils.toast(getApplication(), "图片上传失败,请检查网络") postImageLiveData.postValue(Resource.error(null)) -// if (e != null && e instanceof HttpException && ((HttpException) e).code() == 403) { -// toast("图片违规"); -// } else { -// toast("图片上传失败,请检查网络"); -// } } }) } 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 index 34c79df183..72bb344d72 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerAdapter.kt @@ -15,6 +15,16 @@ import com.gh.gamecenter.qa.questions.detail.AnswerViewHolder class AnswerAdapter(context: Context, private val mEntrance: String?) : ListAdapter(context) { + + override fun setListData(updateData: MutableList?) { + if (updateData != null) { + for (data in updateData) { + if (!data.active) updateData.remove(data) + } + } + super.setListData(updateData) + } + override fun getItemViewType(position: Int): Int { return if (position == itemCount - 1) ItemViewType.ITEM_FOOTER else ItemViewType.ITEM_BODY } 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 index 50a2cea288..53c9c4c491 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerFragment.kt @@ -1,15 +1,12 @@ 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>() { +class AnswerFragment : ListFragment() { private var mAdapter: AnswerAdapter? = null @@ -22,8 +19,4 @@ class AnswerFragment : ListFragment { - 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/AnswerViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerViewModel.kt new file mode 100644 index 0000000000..62522cf4bf --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerViewModel.kt @@ -0,0 +1,31 @@ +package com.gh.gamecenter.qa.editor + +import android.app.Application +import com.gh.gamecenter.baselist.ListViewModel +import com.gh.gamecenter.manager.UserManager +import com.gh.gamecenter.qa.entity.AnswerEntity +import com.gh.gamecenter.retrofit.RetrofitManager +import io.reactivex.Observable + +class AnswerViewModel(application: Application) : ListViewModel(application) { + override fun provideDataObservable(page: Int): Observable<*> { + return RetrofitManager.getInstance(getApplication()).api.getCollectionAnswer(UserManager.getInstance().userId, page) + } + + override fun mergeResultLiveData() { + mResultLiveData.addSource(mListLiveData) { mResultLiveData.postValue(it) } + } + + override fun filterData(list: MutableList): MutableList { + var i = 0 + while (i < list.size) { + val data = list[i] + if (!data.active) { + list.remove(data) + i-- + } + i++ + } + return list + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/ArticleFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/ArticleFragment.kt index 4cab4cb788..c1c27f8973 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/editor/ArticleFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/ArticleFragment.kt @@ -1,15 +1,12 @@ 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.ArticleEntity import com.gh.gamecenter.retrofit.RetrofitManager -import com.halo.assistant.HaloApp import io.reactivex.Observable -class ArticleFragment : ListFragment>() { +class ArticleFragment : ListFragment() { private var mAdapter: ArticleAdapter? = null @@ -21,9 +18,4 @@ class ArticleFragment : ListFragment>? { return RetrofitManager.getInstance(context).api.getCollectionCommunityArticle(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/ArticleViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/ArticleViewModel.kt new file mode 100644 index 0000000000..4777532da9 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/ArticleViewModel.kt @@ -0,0 +1,33 @@ +package com.gh.gamecenter.qa.editor + +import android.app.Application +import com.gh.gamecenter.baselist.ListViewModel +import com.gh.gamecenter.manager.UserManager +import com.gh.gamecenter.qa.entity.ArticleEntity +import com.gh.gamecenter.retrofit.RetrofitManager +import io.reactivex.Observable + +class ArticleViewModel(application: Application) : ListViewModel(application) { + + override fun provideDataObservable(page: Int): Observable<*> { + return RetrofitManager.getInstance(getApplication()).api.getCollectionCommunityArticle(UserManager.getInstance().userId, page) + } + + override fun mergeResultLiveData() { + mResultLiveData.addSource(mListLiveData) { mResultLiveData.postValue(it) } + } + + override fun filterData(list: MutableList): MutableList { + var i = 0 + while (i < list.size) { + val data = list[i] + if (!data.active) { + list.remove(data) + i-- + } + i++ + } + return list + } + +} \ 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 index 991de9619c..324aad7260 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/editor/LinkFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/LinkFragment.kt @@ -60,7 +60,7 @@ class LinkFragment : BaseFragment() { searchTv.text = "确定" if (activity is InsertAnswerWrapperActivity) { searchEt.hint = "请输入回答链接" - hint.text = "获取回答链接的方式:\n1.在回答详情页面,点击右上角【…】按钮 \n2.然后点击【分享】,再点击【复制链接】" + hint.text = "获取回答连接的方式:\n1.在回答详情页面,点击下方的\"分享\"按钮 \n2.在分享窗口内,再点击【复制链接】即可" } else { searchEt.hint = "请输入文章链接" hint.text = "获取文章链接的方式:\n1.在文章详情页面,点击右上角【…】按钮 \n2.然后点击【分享】,再点击【复制链接】" diff --git a/app/src/main/res/drawable-xhdpi/editor_link_unselect.png b/app/src/main/res/drawable-xhdpi/editor_link_unselect.png index 88fd489de6..a62773d40e 100644 Binary files a/app/src/main/res/drawable-xhdpi/editor_link_unselect.png and b/app/src/main/res/drawable-xhdpi/editor_link_unselect.png differ