diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 22c5437..04462de 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -272,6 +272,11 @@
android:configChanges="keyboardHidden|orientation|locale"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan|stateHidden" />
+
() {
+ 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.shipperPositiveReviewRate} 好评率${item.shipperTransactionVolume.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/dahe/gldriver/base/AppConfig.kt b/app/src/main/java/com/dahe/gldriver/base/AppConfig.kt
index 54d04c9..e624213 100644
--- a/app/src/main/java/com/dahe/gldriver/base/AppConfig.kt
+++ b/app/src/main/java/com/dahe/gldriver/base/AppConfig.kt
@@ -17,6 +17,7 @@ object AppConfig {
const val IS_FIRST_OPEN = "DA_HE_IS_FIRST_OPEN"
const val WAYBILL_ID = "DA_HE_WAYBILL_ID"
const val CHILDRE_ID = "DA_HE_CHILDRE_ID"
+ const val RATE_TYPE = "DA_HE_RATE_TYPE"//0:收到的评价 1:发表的评价
const val CODE = "DA_HE_PHONE"
const val REFRSH = "DA_HE_REFRSH"
const val SUCCESS_TYPE = "DA_HE_SUCCESS_TYPE"
diff --git a/app/src/main/java/com/dahe/gldriver/bean/ApiBean.kt b/app/src/main/java/com/dahe/gldriver/bean/ApiBean.kt
new file mode 100644
index 0000000..bb8c25a
--- /dev/null
+++ b/app/src/main/java/com/dahe/gldriver/bean/ApiBean.kt
@@ -0,0 +1,31 @@
+package com.dahe.gldriver.bean
+
+/**
+ * @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/dahe/gldriver/bean/UserBean.kt b/app/src/main/java/com/dahe/gldriver/bean/UserBean.kt
index 1f7fc71..842e484 100644
--- a/app/src/main/java/com/dahe/gldriver/bean/UserBean.kt
+++ b/app/src/main/java/com/dahe/gldriver/bean/UserBean.kt
@@ -30,7 +30,7 @@ data class UserBean(
var qrcodeUrl :String,
var expires_in :Int,
var credit :String,
- var isCarCaptain :String,
+ var isCarCaptain :String,//是否是车队长(0=否,1=是,9=未选择)
var contactName :String,
var idcardName :String,
var avatar :String,
diff --git a/app/src/main/java/com/dahe/gldriver/net/Api.kt b/app/src/main/java/com/dahe/gldriver/net/Api.kt
index 5f4f49a..e4db75c 100644
--- a/app/src/main/java/com/dahe/gldriver/net/Api.kt
+++ b/app/src/main/java/com/dahe/gldriver/net/Api.kt
@@ -11,6 +11,7 @@ import com.dahe.gldriver.bean.InviteRecord
import com.dahe.gldriver.bean.OcrPersonBean
import com.dahe.gldriver.bean.OrderDetailBean
import com.dahe.gldriver.bean.OssBean
+import com.dahe.gldriver.bean.RateBean
import com.dahe.gldriver.bean.UpBankInfoBean
import com.dahe.gldriver.bean.UpCaptain
import com.dahe.gldriver.bean.UpDriverInfoBean
@@ -72,8 +73,8 @@ interface Api {
* @param token String
* @return Observable>
*/
- @GET(BASE_URL+"auth/driver/oneClickLogin")
- fun oneClickLogin(@Query("token") token : String) :Observable>
+ @GET(BASE_URL + "auth/driver/oneClickLogin")
+ fun oneClickLogin(@Query("token") token: String): Observable>
/**
@@ -175,7 +176,7 @@ interface Api {
* @param upPart UpPart
* @return Observable>
*/
- @POST(BASE_URL+"driver/driver/submitToCpcAuthentication")
+ @POST(BASE_URL + "driver/driver/submitToCpcAuthentication")
fun submitToCpcAuthentication(@Body upPart: UpPart): Observable>
/**
@@ -183,7 +184,7 @@ interface Api {
* @param upPart UpPart
* @return Observable>
*/
- @GET(BASE_URL+"driver/driver/getCpcAuthenticationInfo")
+ @GET(BASE_URL + "driver/driver/getCpcAuthenticationInfo")
fun getCpcAuthenticationInfo(): Observable>
@@ -235,8 +236,8 @@ interface Api {
* @param upRate UpRate
* @return Observable>
*/
- @POST(BASE_URL+"driver/opinions/submitComments")
- fun submitComments(@Body upRate: UpRate):Observable>
+ @POST(BASE_URL + "driver/opinions/submitComments")
+ fun submitComments(@Body upRate: UpRate): Observable>
/**
@@ -359,6 +360,22 @@ interface Api {
fun getCaptainById(@Query("captainId") captainId: 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>
+
+
companion object {
// String BASE_URL = "https://tmstest.dahehuoyun.com/";
const val BASE_URL = BuildConfig.BASE_URL
diff --git a/app/src/main/java/com/dahe/gldriver/ui/account/CodeLoginActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/account/CodeLoginActivity.kt
index 6df7dd0..1e50c4c 100644
--- a/app/src/main/java/com/dahe/gldriver/ui/account/CodeLoginActivity.kt
+++ b/app/src/main/java/com/dahe/gldriver/ui/account/CodeLoginActivity.kt
@@ -74,10 +74,19 @@ class CodeLoginActivity : BaseActivity(), View.OnClickListe
override fun onSuccess(t: CommonResponseBean) {
super.onSuccess(t)
SPUtils.instance.setUserInfo(mContext, Gson().toJson(t.data))
- ActivityUtils.startActivity(
- mContext,
- HomeActivity::class.java
- )
+ if (t.data.isCarCaptain == "9") {//是否是车队长(0=否,1=是,9=未选择)
+ ActivityUtils.startActivity(
+ mContext,
+ SelectRoleActivity::class.java
+ )
+ } else {
+ ActivityUtils.startActivity(
+ mContext,
+ HomeActivity::class.java
+ )
+ }
+
+
ActivityUtils.finishToActivity(LoginActivity::class.java, true)
}
}))
diff --git a/app/src/main/java/com/dahe/gldriver/ui/account/SelectRoleActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/account/SelectRoleActivity.kt
index 17810db..db6210b 100644
--- a/app/src/main/java/com/dahe/gldriver/ui/account/SelectRoleActivity.kt
+++ b/app/src/main/java/com/dahe/gldriver/ui/account/SelectRoleActivity.kt
@@ -28,17 +28,17 @@ class SelectRoleActivity : BaseActivity() {
binding.rlPerson.setOnClickListener {
- ActivityUtils.startActivity(mContext, AuthPersonActivity::class.java)
+// ActivityUtils.startActivity(mContext, AuthPersonActivity::class.java)
-// DataManager.getInstance().setUpDriverRole("0")
-// .subscribeOn(Schedulers.io())
-// .observeOn(AndroidSchedulers.mainThread())
-// .subscribe(BaseObserver(mContext, object : RxHttpCallBack(this) {
-// override fun onSuccess(t: CommonResponseBean) {
-// super.onSuccess(t)
-// ActivityUtils.startActivity(mContext, AuthPersonActivity::class.java)
-// }
-// }))
+ DataManager.getInstance().setUpDriverRole("0")
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(BaseObserver(mContext, object : RxHttpCallBack(this) {
+ override fun onSuccess(t: CommonResponseBean) {
+ super.onSuccess(t)
+ ActivityUtils.startActivity(mContext, AuthPersonActivity::class.java)
+ }
+ }))
// ActivityUtils.startActivity(mContext, AuthPersonActivity::class.java)
}
diff --git a/app/src/main/java/com/dahe/gldriver/ui/mine/MineFragment.kt b/app/src/main/java/com/dahe/gldriver/ui/mine/MineFragment.kt
index bd24bdf..e1c8e8c 100644
--- a/app/src/main/java/com/dahe/gldriver/ui/mine/MineFragment.kt
+++ b/app/src/main/java/com/dahe/gldriver/ui/mine/MineFragment.kt
@@ -12,6 +12,7 @@ import com.dahe.gldriver.ui.mine.activity.CarTeamActivity
import com.dahe.gldriver.ui.mine.activity.CarsManActivity
import com.dahe.gldriver.ui.mine.activity.DriverTeamsActivity
import com.dahe.gldriver.ui.mine.activity.PersonInfoActivity
+import com.dahe.gldriver.ui.mine.activity.RateManActivity
import com.dahe.gldriver.ui.mine.activity.WalletActivity
import com.dahe.gldriver.utils.SPUtils
import com.dahe.mylibrary.base.BaseFragment
@@ -136,7 +137,7 @@ class MineFragment : BaseFragment(), View.OnClickListener {
}
3 -> {
- ToastUtils.showToast(mContext, tools[pos].title)
+ ActivityUtils.startActivity(mContext,RateManActivity::class.java)
}
}
@@ -156,11 +157,11 @@ class MineFragment : BaseFragment(), View.OnClickListener {
}
2 -> {
- ToastUtils.showToast(mContext, tools[pos].title)
+ ToastUtils.showToast(mContext, plats[pos].title)
}
3 -> {
- ToastUtils.showToast(mContext, tools[pos].title)
+ ToastUtils.showToast(mContext, plats[pos].title)
}
4 -> {
@@ -168,11 +169,11 @@ class MineFragment : BaseFragment(), View.OnClickListener {
}
5 -> {
- ToastUtils.showToast(mContext, tools[pos].title)
+ ToastUtils.showToast(mContext, plats[pos].title)
}
6 -> {
- ToastUtils.showToast(mContext, tools[pos].title)
+ ToastUtils.showToast(mContext, plats[pos].title)
}
7 -> {
diff --git a/app/src/main/java/com/dahe/gldriver/ui/mine/activity/RateManActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/mine/activity/RateManActivity.kt
new file mode 100644
index 0000000..a73088b
--- /dev/null
+++ b/app/src/main/java/com/dahe/gldriver/ui/mine/activity/RateManActivity.kt
@@ -0,0 +1,154 @@
+package com.dahe.gldriver.ui.mine.activity
+
+import android.content.Context
+import android.graphics.Color
+import android.os.Bundle
+import android.view.View
+import androidx.fragment.app.Fragment
+import androidx.viewpager2.widget.ViewPager2
+import com.dahe.gldriver.R
+import com.dahe.gldriver.adapter.PagersAdapter
+import com.dahe.gldriver.base.AppConfig
+import com.dahe.gldriver.bean.RateBean
+import com.dahe.gldriver.databinding.ActivityRateManBinding
+import com.dahe.gldriver.net.BaseObserver
+import com.dahe.gldriver.net.DataManager
+import com.dahe.gldriver.net.RxHttpCallBack
+import com.dahe.gldriver.ui.mine.fragment.CarsManFragment
+import com.dahe.gldriver.ui.mine.fragment.DriversManFragment
+import com.dahe.gldriver.ui.mine.fragment.RateFragment
+import com.dahe.gldriver.utils.SPUtils
+import com.dahe.mylibrary.base.BaseActivity
+import com.dahe.mylibrary.net.CommonResponseBean
+import com.dahe.mylibrary.utils.ImageLoader
+import com.dahe.mylibrary.utils.PhoneFormatCheckUtils
+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 TODO
+ */
+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.idcardName
+ 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/java/com/dahe/gldriver/ui/mine/fragment/RateFragment.kt b/app/src/main/java/com/dahe/gldriver/ui/mine/fragment/RateFragment.kt
new file mode 100644
index 0000000..c1127e1
--- /dev/null
+++ b/app/src/main/java/com/dahe/gldriver/ui/mine/fragment/RateFragment.kt
@@ -0,0 +1,89 @@
+package com.dahe.gldriver.ui.mine.fragment
+
+import android.graphics.Color
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.dahe.gldriver.R
+import com.dahe.gldriver.adapter.DriversAdapter
+import com.dahe.gldriver.adapter.RateAdapter
+import com.dahe.gldriver.base.AppConfig
+import com.dahe.gldriver.bean.RateBean
+import com.dahe.gldriver.databinding.FragmentWaybillListBinding
+import com.dahe.gldriver.net.BaseObserver
+import com.dahe.gldriver.net.DataManager
+import com.dahe.gldriver.net.RxHttpCallBack
+import com.dahe.gldriver.ui.mine.InviteDriverActivity
+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 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/dahe/gldriver/utils/OneKeyLoginUtils.kt b/app/src/main/java/com/dahe/gldriver/utils/OneKeyLoginUtils.kt
index fadd4c0..0b480e2 100644
--- a/app/src/main/java/com/dahe/gldriver/utils/OneKeyLoginUtils.kt
+++ b/app/src/main/java/com/dahe/gldriver/utils/OneKeyLoginUtils.kt
@@ -64,10 +64,18 @@ class OneKeyLoginUtils private constructor() {
super.onSuccess(t)
mPhoneNumberAuthHelper.quitLoginPage()
SPUtils.instance.setUserInfo(context, Gson().toJson(t.data))
- ActivityUtils.startActivity(
- context,
- HomeActivity::class.java
- )
+
+ if (t.data.isCarCaptain == "9") {//是否是车队长(0=否,1=是,9=未选择)
+ ActivityUtils.startActivity(
+ context,
+ SelectRoleActivity::class.java
+ )
+ } else {
+ ActivityUtils.startActivity(
+ context,
+ HomeActivity::class.java
+ )
+ }
ActivityUtils.finishToActivity(LoginActivity::class.java,true)
}
}))
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/item_rate.xml b/app/src/main/res/layout/item_rate.xml
new file mode 100644
index 0000000..93dd3b8
--- /dev/null
+++ b/app/src/main/res/layout/item_rate.xml
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file