diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 57bdebd..f08a52f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -188,6 +188,32 @@ android:configChanges="keyboardHidden|orientation|locale" android:screenOrientation="portrait" android:windowSoftInputMode="adjustPan|stateHidden" /> + + + + + + + + + + ) : FragmentStateAdapter(fragmentActivity) { + private var fragmentList : MutableList =ArrayList() + init { + this.fragmentList = list + } + + override fun getItemCount(): Int { + return fragmentList.size + } + + override fun createFragment(position: Int): Fragment { + return fragmentList[position] + } + + fun addFragment(fragment: Fragment){ + fragmentList.add(fragment) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dhsd/glowner/adapter/QuestionAdatper.kt b/app/src/main/java/com/dhsd/glowner/adapter/QuestionAdatper.kt new file mode 100644 index 0000000..6f318b7 --- /dev/null +++ b/app/src/main/java/com/dhsd/glowner/adapter/QuestionAdatper.kt @@ -0,0 +1,31 @@ +package com.dhsd.glowner.adapter + +import android.content.Context +import android.view.ViewGroup +import com.chad.library.adapter4.BaseQuickAdapter +import com.chad.library.adapter4.viewholder.QuickViewHolder +import com.dahe.gldriver.bean.QuestionBean +import com.dahe.mylibrary.utils.ImageLoader +import com.dhsd.glowner.R + +/** + * @ClassName QuestionAdatper + * @Author john + * @Date 2024/3/25 17:04 + * @Description TODO + */ +class QuestionAdatper : BaseQuickAdapter() { + override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: QuestionBean?) { + holder.run { + setText(R.id.tvTitle, item?.classroomName) + setText(R.id.tvDate, item?.updateTime) + ImageLoader.getInstance().loadImage(context,item?.classroomUrl,getView(R.id.ivBg)) + } + } + + override fun onCreateViewHolder( + context: Context, + parent: ViewGroup, + viewType: Int + ) = QuickViewHolder(R.layout.item_question, parent) +} \ No newline at end of file diff --git a/app/src/main/java/com/dhsd/glowner/adapter/RateAdapter.kt b/app/src/main/java/com/dhsd/glowner/adapter/RateAdapter.kt new file mode 100644 index 0000000..1b6f831 --- /dev/null +++ b/app/src/main/java/com/dhsd/glowner/adapter/RateAdapter.kt @@ -0,0 +1,48 @@ +package com.dhsd.glowner.adapter + +import android.content.Context +import android.view.ViewGroup +import android.widget.ImageView +import com.chad.library.adapter4.BaseQuickAdapter +import com.chad.library.adapter4.viewholder.QuickViewHolder +import com.dahe.gldriver.bean.RateBean +import com.dahe.mylibrary.utils.ImageLoader +import com.dhsd.glowner.R +import me.zhanghai.android.materialratingbar.MaterialRatingBar + +/** + * @ClassName WaybillAdapter + * @Author 用户 + * @Date 2024/3/18 16:27 + * @Description 评价管理adapter + */ +class RateAdapter(var isInvite: Boolean = false) : + BaseQuickAdapter() { + override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: RateBean?) { + item?.let { + holder.run { + setText(R.id.tvDate, item.createTime) + setText(R.id.tvContent, item.opinionsContent) + setText(R.id.tvComName, item.realCompanyName) + setText( + R.id.tvRate, + """交易${item.shipperTransactionVolume} 好评率${item.shipperPositiveReviewRate.toInt() * 100}%""" + ) + + val rating = getView(R.id.rating) + rating.rating = item.opinionsStarRating.toFloat() / 2 + ImageLoader.getInstance() + .loadRoundImage(context, it.avatar, 6, getView(R.id.ivHead)) + } + } + } + + override fun onCreateViewHolder( + context: Context, + parent: ViewGroup, + viewType: Int + ): QuickViewHolder { + // 返回一个 ViewHolder + return QuickViewHolder(R.layout.item_rate, parent) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dhsd/glowner/base/AppConfig.kt b/app/src/main/java/com/dhsd/glowner/base/AppConfig.kt index be37d1e..c2478b3 100644 --- a/app/src/main/java/com/dhsd/glowner/base/AppConfig.kt +++ b/app/src/main/java/com/dhsd/glowner/base/AppConfig.kt @@ -20,5 +20,6 @@ object AppConfig { const val PWD = "DA_HE_PHONE" const val CODE = "DA_HE_PHONE" const val SUCCESS_TYPE = "DA_HE_SUCCESS_TYPE" + const val RATE_TYPE = "DA_HE_RATE_TYPE"//0:收到的评价 1:发表的评价 } \ No newline at end of file diff --git a/app/src/main/java/com/dhsd/glowner/bean/TabBean.kt b/app/src/main/java/com/dhsd/glowner/bean/TabBean.kt index b86bd45..711f687 100644 --- a/app/src/main/java/com/dhsd/glowner/bean/TabBean.kt +++ b/app/src/main/java/com/dhsd/glowner/bean/TabBean.kt @@ -83,3 +83,50 @@ data class Material( var materialUrl: String="", var sortValue: String="" ) + +data class QuestionBean( + val classroomDesc: String, + val classroomId: String, + val classroomName: String, + val classroomUrl: String, + val createTime: String, + val isRecommend: String, + val isTop: String, + val sortValue: String, + val status: String, + val updateTime: String +) + +data class QueDetail( + val classroomId: String, + val contentData: String +) + +/** + * @ClassName ApiBean + * @Author john + * @Date 2024/3/18 09:59 + * @Description TODO + */ +data class RateBean( + val createBy: String, + val createTime: String, + val driverId: Int, + val operatorType: String, + val opinionsContent: String, + val positiveReviewRate: String, + val totalNumberOfOrders: String, + val numberOfEvaluations1: String, + val numberOfEvaluations2: String, + val numberOfEvaluations3: String, + val opinionsId: Int, + val opinionsStarRating: Int, + val opinionsStatus: String, + val opinionsType: String, + val realCompanyName: String, + val shipperPositiveReviewRate: String, + val shipperTransactionVolume: String, + val avatar: String, + val orderId: Int, + val updateBy: String +) diff --git a/app/src/main/java/com/dhsd/glowner/net/Api.kt b/app/src/main/java/com/dhsd/glowner/net/Api.kt index 764bc1d..ff45865 100644 --- a/app/src/main/java/com/dhsd/glowner/net/Api.kt +++ b/app/src/main/java/com/dhsd/glowner/net/Api.kt @@ -1,4 +1,7 @@ import com.dahe.gldriver.bean.ProBean +import com.dahe.gldriver.bean.QueDetail +import com.dahe.gldriver.bean.QuestionBean +import com.dahe.gldriver.bean.RateBean import com.dahe.gldriver.bean.UpPart import com.dahe.glex.bean.* import com.dahe.mylibrary.net.CommonResponseBean @@ -217,4 +220,36 @@ interface Api { */ @GET(BASE_URL + "driver/app/info/getLastAppVersion") fun getLastAppVersion(): Observable> + + + /** + * 安全课堂列表 + * @return Observable> + */ + @GET(BASE_URL + "driver/app/info/safeClassroomList") + fun safeClassroomList(): Observable>> + + /** + * 安全课堂详情 + * @param problemId String + * @return Observable> + */ + @GET(BASE_URL + "driver/app/info/safeClassroomDetail") + fun safeClassroomDetail(@Query("classroomId") problemId: String): Observable> + + + /** + * 查询运单评价信息列表 + * opinionsType 评价类型(0=司机评价,1=货主评价) + * @return Observable> + */ + @GET(BASE_URL + "driver/opinions/list") + fun waybillRate(@Query("opinionsType") opinionsType: String): Observable>> + + /** + * 查询司机总评价信息 + * @return Observable> + */ + @GET(BASE_URL + "driver/opinions/getDriverOpinionsStatInfo") + fun driverRate(): Observable> } \ No newline at end of file diff --git a/app/src/main/java/com/dhsd/glowner/ui/mine/MineFragment.kt b/app/src/main/java/com/dhsd/glowner/ui/mine/MineFragment.kt index b54e56f..f6bc0fb 100644 --- a/app/src/main/java/com/dhsd/glowner/ui/mine/MineFragment.kt +++ b/app/src/main/java/com/dhsd/glowner/ui/mine/MineFragment.kt @@ -24,6 +24,8 @@ import com.dhsd.glowner.databinding.FragmentMineBinding import com.dhsd.glowner.ui.WebActivity import com.dhsd.glowner.ui.mine.activity.AuthPartyActivity import com.dhsd.glowner.ui.mine.activity.ComProActivity +import com.dhsd.glowner.ui.mine.activity.QuesActivity +import com.dhsd.glowner.ui.mine.activity.RateManActivity import com.dhsd.glowner.ui.mine.activity.RulesActivity import com.dhsd.glowner.ui.mine.activity.SettingActivity import com.dhsd.glowner.utils.AppVersionUtils @@ -119,6 +121,7 @@ class MineFragment : BaseFragment(), View.OnClickListener, } 2 -> { + ActivityUtils.startActivity(mContext, QuesActivity::class.java) // var bundle = Bundle() // bundle.putString("title","我的百度") // bundle.putString("url","www.baidu.com") @@ -127,7 +130,7 @@ class MineFragment : BaseFragment(), View.OnClickListener, } 3 -> { - ToastUtils.showToast(mContext, tools[pos].title) + ActivityUtils.startActivity(mContext, RateManActivity::class.java) } } diff --git a/app/src/main/java/com/dhsd/glowner/ui/mine/RateFragment.kt b/app/src/main/java/com/dhsd/glowner/ui/mine/RateFragment.kt new file mode 100644 index 0000000..02f5d47 --- /dev/null +++ b/app/src/main/java/com/dhsd/glowner/ui/mine/RateFragment.kt @@ -0,0 +1,87 @@ +package com.dhsd.glowner.ui.mine + +import BaseObserver +import RxHttpCallBack +import android.graphics.Color +import android.widget.LinearLayout +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.dahe.gldriver.base.AppConfig +import com.dahe.gldriver.bean.RateBean +import com.dahe.mylibrary.base.BaseFragment +import com.dahe.mylibrary.callback.RefreshCallBack +import com.dahe.mylibrary.net.CommonResponseBean +import com.dahe.mylibrary.recycleviewswipe.RecycleViewDivider +import com.dahe.mylibrary.utils.ActivityUtils +import com.dahe.mylibrary.utils.ConvertUtils +import com.dhsd.glowner.R +import com.dhsd.glowner.adapter.RateAdapter +import com.dhsd.glowner.databinding.FragmentWaybillList2Binding +import com.dhsd.glowner.databinding.FragmentWaybillListBinding +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers + +/** + * @ClassName RateFragment + * @Author john + * @Date 2024/3/18 09:34 + * @Description TODO + */ +class RateFragment : BaseFragment(), RefreshCallBack { + var rateType: Int = 0 + + lateinit var adapter: RateAdapter + override fun onFragmentVisibleChange(isVisible: Boolean) { + } + + override fun onFragmentFirstVisible() { + setRefresh(binding.refresh,this) + arguments?.let { + rateType = it.getInt(AppConfig.RATE_TYPE, 0) + } + + adapter = binding.recyclerView.run { + layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false) + addItemDecoration( + RecycleViewDivider( + LinearLayout.VERTICAL, + ConvertUtils.dp2px(16.0f), + Color.TRANSPARENT + ) + ) + adapter = RateAdapter() + adapter as RateAdapter + }.apply { + isStateViewEnable = true + } + +// binding.btnOk.setOnClickListener { +// ActivityUtils.startActivity(mContext, InviteDriverActivity::class.java) +// } + initData() + } + + private fun initData() { + DataManager.getInstance().waybillRate(rateType.toString()) + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack>() { + override fun onSuccess(t: CommonResponseBean>) { + super.onSuccess(t) + if (t.data ==null || t.data.size == 0) { + adapter.submitList(null) + adapter.setStateViewLayout(mContext, R.layout.empty_view) + } else { + adapter?.submitList(t.data) + } + setFinishRefresh( + binding.refresh, + t.total > mRefreshPage * mRefreshCount + ) + } + })) + } + + override fun getRefreshDate(stat: Int, page: Int, count: Int) { + initData() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dhsd/glowner/ui/mine/activity/QueDetailActivity.kt b/app/src/main/java/com/dhsd/glowner/ui/mine/activity/QueDetailActivity.kt new file mode 100644 index 0000000..d30dda6 --- /dev/null +++ b/app/src/main/java/com/dhsd/glowner/ui/mine/activity/QueDetailActivity.kt @@ -0,0 +1,75 @@ +package com.dhsd.glowner.ui.mine.activity + +import BaseObserver +import RxHttpCallBack +import android.os.Bundle +import android.text.Html +import android.webkit.WebView +import android.widget.FrameLayout +import com.dahe.gldriver.base.AppConfig +import com.dahe.gldriver.bean.QueDetail +import com.dahe.gldriver.bean.QuestionBean +import com.dahe.mylibrary.base.BaseActivity +import com.dahe.mylibrary.net.CommonResponseBean +import com.dhsd.glowner.R +import com.dhsd.glowner.databinding.ActivityQueDetailBinding +import com.google.gson.Gson +import com.just.agentweb.AgentWeb +import com.just.agentweb.AgentWebUIControllerImplBase +import com.just.agentweb.WebChromeClient +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers + +/** + * @ClassName ComProActivity + * @Author john + * @Date 2024/3/25 16:42 + * @Description 安全课堂详情 + */ +class QueDetailActivity : BaseActivity() { + private var mAgentWeb: AgentWeb? = null + override fun initView(savedInstanceState: Bundle?) { + setStatusBarColor(R.color.white) + setTitleBar("安全课堂", true) + mAgentWeb = AgentWeb.with(this) + .setAgentWebParent(binding.WebViewLayout, FrameLayout.LayoutParams(-1, -1)) + .useDefaultIndicator() + .setWebChromeClient(mWebChromeClient) + .setSecurityType(AgentWeb.SecurityType.DEFAULT_CHECK) + .setAgentWebUIController(AgentWebUIControllerImplBase()) + .createAgentWeb() + .ready() + .go("") + } + + override fun initDate() { + var proBean = Gson().fromJson(intent.extras?.getString(AppConfig.BEAN), QuestionBean::class.java) + + + DataManager.getInstance().safeClassroomDetail(proBean.classroomId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + binding.run { +// tvContent.text = Html.fromHtml(t.data.contentData) + mAgentWeb?.webCreator?.webView?.loadDataWithBaseURL(null,t.data.contentData,"text/html" , "utf-8", null) + } + } + })) + } + + private val mWebChromeClient: WebChromeClient = object : WebChromeClient() { + override fun onProgressChanged(view: WebView, newProgress: Int) { + super.onProgressChanged(view, newProgress) + } + + override fun onReceivedTitle(view: WebView, title: String) { + super.onReceivedTitle(view, title) +// setTitleBar( +// if (TextUtils.isEmpty(mTitle)) title else mTitle +// ) { if (!mAgentWeb!!.back()) finish() } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dhsd/glowner/ui/mine/activity/QuesActivity.kt b/app/src/main/java/com/dhsd/glowner/ui/mine/activity/QuesActivity.kt new file mode 100644 index 0000000..0f88e2e --- /dev/null +++ b/app/src/main/java/com/dhsd/glowner/ui/mine/activity/QuesActivity.kt @@ -0,0 +1,73 @@ +package com.dhsd.glowner.ui.mine.activity + +import BaseObserver +import RxHttpCallBack +import android.graphics.Color +import android.os.Bundle +import android.widget.LinearLayout +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.dahe.gldriver.base.AppConfig +import com.dahe.gldriver.bean.QuestionBean +import com.dahe.mylibrary.base.BaseActivity +import com.dahe.mylibrary.net.CommonResponseBean +import com.dahe.mylibrary.recycleviewswipe.RecycleViewDivider +import com.dahe.mylibrary.utils.ActivityUtils +import com.dahe.mylibrary.utils.ConvertUtils +import com.dhsd.glowner.R +import com.dhsd.glowner.adapter.QuestionAdatper +import com.dhsd.glowner.databinding.ActivityQuesBinding +import com.google.gson.Gson +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers + +/** + * @ClassName QuesActivity + * @Author john + * @Date 2024/3/27 16:00 + * @Description 安全课堂 + */ +class QuesActivity : BaseActivity() { + + lateinit var adapter: QuestionAdatper + override fun initView(savedInstanceState: Bundle?) { + setStatusBarColor(R.color.white) + setTitleBar("安全课堂", true) + + binding.run { + adapter = recycler.run { + layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false) + addItemDecoration( + RecycleViewDivider( + LinearLayout.VERTICAL, + ConvertUtils.dp2px(10.0f), + Color.TRANSPARENT + ) + ) + adapter = QuestionAdatper() + adapter as QuestionAdatper + }.apply { + setOnItemClickListener { _, _, position -> + ActivityUtils.startActivity( + mContext, + QueDetailActivity::class.java, + Bundle().apply { + putString(AppConfig.BEAN, Gson().toJson(items[position])) + }) + } + } + } + } + + override fun initDate() { + DataManager.getInstance().safeClassroomList() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack>() { + override fun onSuccess(t: CommonResponseBean>) { + super.onSuccess(t) + adapter.submitList(t.data) + } + })) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dhsd/glowner/ui/mine/activity/RateManActivity.kt b/app/src/main/java/com/dhsd/glowner/ui/mine/activity/RateManActivity.kt new file mode 100644 index 0000000..77f51ad --- /dev/null +++ b/app/src/main/java/com/dhsd/glowner/ui/mine/activity/RateManActivity.kt @@ -0,0 +1,149 @@ +package com.dhsd.glowner.ui.mine.activity + +import BaseObserver +import RxHttpCallBack +import android.content.Context +import android.graphics.Color +import android.os.Bundle +import androidx.fragment.app.Fragment +import androidx.viewpager2.widget.ViewPager2 +import com.dahe.gldriver.base.AppConfig +import com.dahe.gldriver.bean.RateBean +import com.dahe.mylibrary.base.BaseActivity +import com.dahe.mylibrary.net.CommonResponseBean +import com.dahe.mylibrary.utils.ImageLoader +import com.dhsd.glowner.R +import com.dhsd.glowner.adapter.PagersAdapter +import com.dhsd.glowner.databinding.ActivityRateManBinding +import com.dhsd.glowner.ui.mine.RateFragment +import com.dhsd.glowner.utils.SPUtils +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers +import net.lucode.hackware.magicindicator.FragmentContainerHelper +import net.lucode.hackware.magicindicator.buildins.UIUtil +import net.lucode.hackware.magicindicator.buildins.commonnavigator.CommonNavigator +import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter +import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerIndicator +import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerTitleView +import net.lucode.hackware.magicindicator.buildins.commonnavigator.indicators.LinePagerIndicator +import net.lucode.hackware.magicindicator.buildins.commonnavigator.titles.ColorTransitionPagerTitleView + +/** + * @ClassName RateManActivity + * @Author john + * @Date 2024/3/18 08:51 + * @Description 评价管理 + */ +class RateManActivity : BaseActivity() { + + private val mFragmentContainerHelper = FragmentContainerHelper() + var mFragments = mutableListOf() + val titles = mutableListOf( + "收到的评价", "发表的评价" + ) + + + override fun initView(savedInstanceState: Bundle?) { + setStatusBarColor(R.color.white) + setTitleBar("评价管理", true) + + mFragments.run { + add(RateFragment().apply { + arguments = Bundle().apply { + putInt(AppConfig.RATE_TYPE, 0) + } + }) + add(RateFragment().apply { + arguments = Bundle().apply { + putInt(AppConfig.RATE_TYPE, 1) + } + }) + } + + var pagerAdapter = PagersAdapter(this, mFragments) + + + mFragmentContainerHelper.handlePageSelected(0, true) + + binding.viewPager.adapter = pagerAdapter + binding.viewPager.currentItem = 0 + binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() { + override fun onPageSelected(position: Int) { + super.onPageSelected(position) + mFragmentContainerHelper.handlePageSelected(position, true) + } + }); + + var commonNavigator = CommonNavigator(mContext) + commonNavigator.run { + isAdjustMode = true + adapter = object : CommonNavigatorAdapter() { + override fun getCount(): Int { + return titles.size + } + + override fun getTitleView(context: Context?, index: Int): IPagerTitleView { + val colorTransitionPagerTitleView = ColorTransitionPagerTitleView(context) + colorTransitionPagerTitleView.normalColor = Color.BLACK + colorTransitionPagerTitleView.selectedColor = Color.RED + colorTransitionPagerTitleView.text = titles[index] + colorTransitionPagerTitleView.setOnClickListener { + mFragmentContainerHelper.handlePageSelected(index) + switchPages(index) + } + return colorTransitionPagerTitleView + } + + override fun getIndicator(context: Context?): IPagerIndicator { + val indicator = LinePagerIndicator(context) + indicator.mode = LinePagerIndicator.MODE_WRAP_CONTENT + indicator.yOffset = UIUtil.dip2px(context, 3.0).toFloat() + indicator.setColors(Color.RED) + return indicator + } + + } + } + + binding.magicIndicator.navigator = commonNavigator + mFragmentContainerHelper.attachMagicIndicator(binding.magicIndicator) + + } + + override fun initDate() { + val userInfo = SPUtils.instance.getUserInfo(mContext) + if (userInfo != null) { + binding.run { + tvName.text = userInfo.userName + ImageLoader.getInstance() + .loadCircleImage(mContext, userInfo.avatar, ivHead, R.drawable.head_defaut) + } + } + DataManager.getInstance().driverRate().subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + t.data?.let { + binding.run { + tvRating.text = if (it.positiveReviewRate.isNullOrEmpty()) "0%" else """${(it.positiveReviewRate.toInt() * 100)}%""" + pbOne.progress = + if (it.numberOfEvaluations1.isNullOrEmpty()) 0 else (it.numberOfEvaluations1.toInt() * 100 / it.totalNumberOfOrders.toInt()) + + pbTwo.progress = + if (it.numberOfEvaluations2.isNullOrEmpty()) 0 else (it.numberOfEvaluations2.toInt() * 100 / it.totalNumberOfOrders.toInt()) + + pbThree.progress = + if (it.numberOfEvaluations3.isNullOrEmpty()) 0 else (it.numberOfEvaluations3.toInt() * 100 / it.totalNumberOfOrders.toInt()) + } + } + } + })) + + + } + + private fun switchPages(index: Int) { + binding.viewPager.currentItem = index + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable-xxhdpi/bg_que.png b/app/src/main/res/drawable-xxhdpi/bg_que.png new file mode 100644 index 0000000..8b5d384 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/bg_que.png differ diff --git a/app/src/main/res/layout/activity_que_detail.xml b/app/src/main/res/layout/activity_que_detail.xml new file mode 100644 index 0000000..b6321bb --- /dev/null +++ b/app/src/main/res/layout/activity_que_detail.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_ques.xml b/app/src/main/res/layout/activity_ques.xml new file mode 100644 index 0000000..3039355 --- /dev/null +++ b/app/src/main/res/layout/activity_ques.xml @@ -0,0 +1,25 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_rate_man.xml b/app/src/main/res/layout/activity_rate_man.xml new file mode 100644 index 0000000..4ff4762 --- /dev/null +++ b/app/src/main/res/layout/activity_rate_man.xml @@ -0,0 +1,245 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_waybill_list2.xml b/app/src/main/res/layout/fragment_waybill_list2.xml new file mode 100644 index 0000000..2868871 --- /dev/null +++ b/app/src/main/res/layout/fragment_waybill_list2.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_question.xml b/app/src/main/res/layout/item_question.xml new file mode 100644 index 0000000..a854bc3 --- /dev/null +++ b/app/src/main/res/layout/item_question.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_rate.xml b/app/src/main/res/layout/item_rate.xml new file mode 100644 index 0000000..df8a6f7 --- /dev/null +++ b/app/src/main/res/layout/item_rate.xml @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mylibrary/build.gradle b/mylibrary/build.gradle index 4c9e9e2..e6ad49f 100644 --- a/mylibrary/build.gradle +++ b/mylibrary/build.gradle @@ -99,6 +99,9 @@ dependencies { api 'com.github.jenly1314.AppUpdater:app-updater:1.2.0' api 'com.github.jenly1314.AppUpdater:app-dialog:1.2.0' + //评价星星 + api 'me.zhanghai.android.materialratingbar:library:1.4.0' + // api 'com.gyf.cactus:cactus:1.1.3-beta13' diff --git a/mylibrary/src/main/java/com/dahe/mylibrary/net/CommonResponseBean.java b/mylibrary/src/main/java/com/dahe/mylibrary/net/CommonResponseBean.java index e354bc0..cdf785c 100644 --- a/mylibrary/src/main/java/com/dahe/mylibrary/net/CommonResponseBean.java +++ b/mylibrary/src/main/java/com/dahe/mylibrary/net/CommonResponseBean.java @@ -12,6 +12,15 @@ public class CommonResponseBean implements Serializable { private int code; private String msg; + private int total; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } public T getData() { return data;