增加数据上传业务

This commit is contained in:
qiji4215
2023-04-26 18:05:51 +08:00
parent a81e2f5d82
commit c5876c9713
12 changed files with 400 additions and 10 deletions

View File

@@ -10,6 +10,8 @@ import com.navinfo.omqs.R
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.omqs.databinding.AdapterTaskListBinding
import com.navinfo.omqs.http.taskdownload.TaskDownloadManager
import com.navinfo.omqs.http.taskupload.TaskUploadManager
import com.navinfo.omqs.tools.FileManager
import com.navinfo.omqs.tools.FileManager.Companion.FileDownloadStatus
import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
import com.navinfo.omqs.ui.other.BaseViewHolder
@@ -25,7 +27,8 @@ import javax.inject.Inject
*使用 LifecycleRegistry 给 ViewHolder 分发生命周期(这里使用了这个)
*/
class TaskListAdapter(
private val downloadManager: TaskDownloadManager
private val downloadManager: TaskDownloadManager,
private val uploadManager: TaskUploadManager
) : BaseRecyclerViewAdapter<TaskBean>() {
@@ -48,6 +51,18 @@ class TaskListAdapter(
}
}
private val uploadBtnClick = View.OnClickListener() {
if (it.tag != null) {
val taskBean = data[it.tag as Int]
Log.e("jingo", "开始上传 ${taskBean.syncStatus}")
when (taskBean.syncStatus) {
FileManager.Companion.FileUploadStatus.NONE->{
uploadManager.start(taskBean.id)
}
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {
val viewBinding =
AdapterTaskListBinding.inflate(LayoutInflater.from(parent.context), parent, false)
@@ -69,8 +84,12 @@ class TaskListAdapter(
changeViews(binding, taskBean)
downloadManager.addTask(taskBean)
downloadManager.observer(taskBean.id, holder, DownloadObserver(taskBean.id, binding))
uploadManager.addTask(taskBean)
uploadManager.observer(taskBean.id, holder, UploadObserver(taskBean.id, binding))
binding.taskDownloadBtn.tag = position
binding.taskDownloadBtn.setOnClickListener(downloadBtnClick)
binding.taskUploadBtn.tag = position
binding.taskUploadBtn.setOnClickListener(uploadBtnClick)
binding.taskName.text = taskBean.evaluationTaskName
binding.taskCityName.text = taskBean.cityName
binding.taskDataVersion.text = "版本号:${taskBean.dataVersion}"
@@ -85,6 +104,22 @@ class TaskListAdapter(
}
}
inner class UploadObserver(val id: Int, val binding: AdapterTaskListBinding) :
Observer<TaskBean> {
override fun onChanged(t: TaskBean?) {
if (id == t?.id)
changeUploadTxtViews(binding, t)
}
}
private fun changeUploadTxtViews(binding: AdapterTaskListBinding, taskBean: TaskBean) {
when (taskBean.syncStatus) {
FileManager.Companion.FileUploadStatus.NONE -> {
binding.taskUploadBtn.text = "已上传"
}
}
}
private fun changeViews(binding: AdapterTaskListBinding, taskBean: TaskBean) {
if (taskBean.fileSize > 0L) {

View File

@@ -9,6 +9,7 @@ import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
import com.navinfo.omqs.databinding.FragmentTaskListBinding
import com.navinfo.omqs.http.taskdownload.TaskDownloadManager
import com.navinfo.omqs.http.taskupload.TaskUploadManager
import com.navinfo.omqs.ui.fragment.BaseFragment
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
@@ -17,12 +18,14 @@ import javax.inject.Inject
class TaskListFragment : BaseFragment(){
@Inject
lateinit var downloadManager: TaskDownloadManager
@Inject
lateinit var uploadManager: TaskUploadManager
private var _binding: FragmentTaskListBinding? = null
private val viewModel by viewModels<TaskListViewModel>()
private val binding get() = _binding!!
private val adapter: TaskListAdapter by lazy {
TaskListAdapter(
downloadManager,
downloadManager,uploadManager
)
}
@@ -31,6 +34,7 @@ class TaskListFragment : BaseFragment(){
savedInstanceState: Bundle?
): View {
downloadManager.init(requireContext())
uploadManager.init(requireContext())
_binding = FragmentTaskListBinding.inflate(inflater, container, false)
return binding.root