diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 8bfd0a9..1a4aeb6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -30,17 +30,6 @@
android:supportsRtl="true"
android:theme="@style/Theme.NavinfoVolvo"
android:usesCleartextTraffic="true">
-
-
-
()
private val messageAdapter by lazy { HomeAdapter(this) }
- private var headBinding: HomeAdapterNotingBinding? = null
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
): View {
- _binding = FragmentHomeBinding.inflate(inflater, container, false)
- val root: View = _binding!!.root
+ _binding = DataBindingUtil.inflate(inflater, R.layout.fragment_home, container, false)
+// _binding = FragmentHomeBinding.inflate(inflater, container, false)
+ val root: View = _binding.root
+ _binding.lifecycleOwner = this
- headBinding = HomeAdapterNotingBinding.inflate(inflater, container, false)
+ headView = HomeAdapterNotingBinding.inflate(inflater, container, false)
initView()
return root
}
@@ -51,9 +54,9 @@ class HomeFragment : BaseFragment(), OnItemClickListener, OnItemMenuClickListene
private fun initView() {
//创建菜单选项
//注意:使用滑动菜单不能开启滑动删除,否则只有滑动删除没有滑动菜单
- var mSwipeMenuCreator = SwipeMenuCreator { _, rightMenu, _ ->
+ val mSwipeMenuCreator = SwipeMenuCreator { _, rightMenu, _ ->
//预览
- var previewItem = SwipeMenuItem(context)
+ val previewItem = SwipeMenuItem(context)
previewItem.height = DisplayUtil.dip2px(requireContext(), 60f)
previewItem.width = DisplayUtil.dip2px(requireContext(), 80f)
previewItem.background = requireContext().getDrawable(R.color.yellow)
@@ -62,7 +65,7 @@ class HomeFragment : BaseFragment(), OnItemClickListener, OnItemMenuClickListene
rightMenu.addMenuItem(previewItem)
//分享
- var shareItem = SwipeMenuItem(context)
+ val shareItem = SwipeMenuItem(context)
shareItem.height = DisplayUtil.dip2px(requireContext(), 60f)
shareItem.width = DisplayUtil.dip2px(requireContext(), 80f)
shareItem.background = requireContext().getDrawable(R.color.blue)
@@ -71,7 +74,7 @@ class HomeFragment : BaseFragment(), OnItemClickListener, OnItemMenuClickListene
rightMenu.addMenuItem(shareItem)
//添加菜单自动添加至尾部
- var deleteItem = SwipeMenuItem(context)
+ val deleteItem = SwipeMenuItem(context)
deleteItem.height = DisplayUtil.dip2px(requireContext(), 60f)
deleteItem.width = DisplayUtil.dip2px(requireContext(), 80f)
deleteItem.text = requireContext().getString(R.string.delete)
@@ -82,96 +85,93 @@ class HomeFragment : BaseFragment(), OnItemClickListener, OnItemMenuClickListene
}
val layoutManager = LinearLayoutManager(context)
- _binding?.let {
- _binding!!.homeRecyclerview.layoutManager = layoutManager
- //自动增加分割线
- _binding!!.homeRecyclerview.addItemDecoration(
- DividerItemDecoration(
- context, layoutManager.orientation
- )
+ _binding.homeRecyclerview.layoutManager = layoutManager
+ //自动增加分割线
+ _binding.homeRecyclerview.addItemDecoration(
+ DividerItemDecoration(
+ context, layoutManager.orientation
)
- //增加侧滑按钮
- _binding!!.homeRecyclerview.setSwipeMenuCreator(mSwipeMenuCreator)
- //单项点击
- _binding!!.homeRecyclerview.setOnItemClickListener(this)
+ )
+ //增加侧滑按钮
+ _binding.homeRecyclerview.setSwipeMenuCreator(mSwipeMenuCreator)
+ //单项点击
+ _binding.homeRecyclerview.setOnItemClickListener(this)
- _binding!!.homeRecyclerview.setLoadMoreListener {
- Log.e("jingo", "下拉加载开始")
+ _binding.homeRecyclerview.setLoadMoreListener {
+ Log.e("jingo", "下拉加载开始")
- } // 加载更多的监听。
+ } // 加载更多的监听。
- //开始下拉刷新
- _binding!!.homeSwipeRefreshLayout.setOnRefreshListener {
- Log.e("jingo", "开始刷新")
+ //开始下拉刷新
+ _binding.homeSwipeRefreshLayout.setOnRefreshListener {
+ Log.e("jingo", "开始刷新")
// viewModel.getNetMessageList()
- messageAdapter.refresh()
- }
+ messageAdapter.refresh()
+ }
- //列表自动分页
- lifecycleScope.launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- viewModel.getNetMessageList().collect {
- messageAdapter.submitData(it)
- }
+ //列表自动分页
+ lifecycleScope.launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ viewModel.getNetMessageList().collect {
+ messageAdapter.submitData(it)
}
}
- //侧滑菜单的监听必需在设置adapter之前
- _binding!!.homeRecyclerview.setOnItemMenuClickListener { menuBridge, adapterPosition ->
- menuBridge.closeMenu()
+ }
+ //侧滑菜单的监听必需在设置adapter之前
+ _binding.homeRecyclerview.setOnItemMenuClickListener { menuBridge, adapterPosition ->
+ menuBridge.closeMenu()
// val direction: Int = menuBridge.getDirection() // 左侧还是右侧菜单。
- when (menuBridge.position) {// 菜单在RecyclerView的Item中的Position。
- 0 -> {//预览按钮
- }
- 1 -> {//分享按钮
- }
- 2 -> {//删除按钮
- viewModel.deleteMessage(messageAdapter.getItemData(adapterPosition).id)
- }
-
+ when (menuBridge.position) {// 菜单在RecyclerView的Item中的Position。
+ 0 -> {//预览按钮
}
- }
-
- _binding!!.homeRecyclerview.adapter = messageAdapter
-
- //初始状态添加监听
- messageAdapter.addLoadStateListener {
- when (it.refresh) {
- is LoadState.NotLoading -> {
- _binding!!.homeSwipeRefreshLayout.isRefreshing = false
- if (messageAdapter.itemCount == 0)
- _binding?.let {
- _binding!!.homeRecyclerview.addHeaderView(headBinding?.root)
- }
- else {
- _binding?.let {
- _binding!!.homeRecyclerview.removeHeaderView(headBinding?.root)
- }
- }
- Log.d("jingo", "is NotLoading")
- }
- is LoadState.Loading -> {
- Log.d("jingo", "is Loading")
- _binding!!.homeSwipeRefreshLayout.isRefreshing = true
- }
- is LoadState.Error -> {
- _binding!!.homeSwipeRefreshLayout.isRefreshing = false
- Log.d("jingo", "is Error:")
- when ((it.refresh as LoadState.Error).error) {
- is IOException -> {
- Log.d("jingo", "IOException")
- }
- else -> {
- Log.d("jingo", "others exception")
- }
- }
- }
+ 1 -> {//分享按钮
+ }
+ 2 -> {//删除按钮
+ viewModel.deleteMessage(messageAdapter.getItemData(adapterPosition).id)
}
- }
- loadMoreFinish()
+ }
}
+ _binding.homeRecyclerview.adapter = messageAdapter
+
+ //初始状态添加监听
+ messageAdapter.addLoadStateListener {
+ when (it.refresh) {
+ is LoadState.NotLoading -> {
+ _binding.homeSwipeRefreshLayout.isRefreshing = false
+ headView?.let {
+
+ if (messageAdapter.itemCount == 0) {
+ if (_binding.homeRecyclerview.headerCount == 0)
+ _binding.homeRecyclerview.addHeaderView(headView!!.root)
+ } else {
+ if (_binding.homeRecyclerview.headerCount > 0)
+ _binding.homeRecyclerview.removeHeaderView(headView!!.root)
+ }
+ }
+
+ }
+ is LoadState.Loading -> {
+ _binding.homeSwipeRefreshLayout.isRefreshing = true
+ }
+ is LoadState.Error -> {
+ _binding.homeSwipeRefreshLayout.isRefreshing = false
+ when ((it.refresh as LoadState.Error).error) {
+ is IOException -> {
+ Log.d("jingo", "刷新 IOException $")
+ }
+ else -> {
+ Log.d("jingo", "刷新 others exception")
+ }
+ }
+ }
+ }
+ }
+
+ loadMoreFinish()
+
//监听数据请求是否结束
viewModel.isLoading.observe(viewLifecycleOwner, Observer {
if (!it) loadMoreFinish()
@@ -179,13 +179,11 @@ class HomeFragment : BaseFragment(), OnItemClickListener, OnItemMenuClickListene
}
private fun loadMoreFinish() {
- _binding?.let {
- _binding!!.homeSwipeRefreshLayout.isRefreshing = false
- // 第一次加载数据:一定要掉用这个方法。
- // 第一个参数:表示此次数据是否为空,假如你请求到的list为空(== null || list.size == 0),那么这里就要true。
- // 第二个参数:表示是否还有更多数据,根据服务器返回给你的page等信息判断是否还有更多,这样可以提供性能,如果不能判断则传true。
- _binding!!.homeRecyclerview.loadMoreFinish(false, true)
- }
+ _binding.homeSwipeRefreshLayout.isRefreshing = false
+ // 第一次加载数据:一定要掉用这个方法。
+ // 第一个参数:表示此次数据是否为空,假如你请求到的list为空(== null || list.size == 0),那么这里就要true。
+ // 第二个参数:表示是否还有更多数据,根据服务器返回给你的page等信息判断是否还有更多,这样可以提供性能,如果不能判断则传true。
+ _binding.homeRecyclerview.loadMoreFinish(false, true)
}
@@ -196,8 +194,7 @@ class HomeFragment : BaseFragment(), OnItemClickListener, OnItemMenuClickListene
override fun onDestroyView() {
super.onDestroyView()
- _binding = null
- headBinding = null
+ headView = null
}
//点击项
diff --git a/app/src/main/java/com/navinfo/volvo/ui/fragments/message/ObtainMessageFragment.kt b/app/src/main/java/com/navinfo/volvo/ui/fragments/message/ObtainMessageFragment.kt
index 83af240..7543852 100644
--- a/app/src/main/java/com/navinfo/volvo/ui/fragments/message/ObtainMessageFragment.kt
+++ b/app/src/main/java/com/navinfo/volvo/ui/fragments/message/ObtainMessageFragment.kt
@@ -51,6 +51,7 @@ import com.nhaarman.supertooltips.ToolTip
import dagger.hilt.android.AndroidEntryPoint
import indi.liyi.viewer.Utils
import indi.liyi.viewer.ViewData
+import me.jagar.chatvoiceplayerlibrary.VoicePlayerView
import top.zibin.luban.Luban
import top.zibin.luban.OnCompressListener
import java.io.File
@@ -78,6 +79,8 @@ class ObtainMessageFragment : Fragment() {
// onDestroyView.
private val binding get() = _binding!!
+ private lateinit var voiceView: VoicePlayerView
+
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
@@ -86,6 +89,10 @@ class ObtainMessageFragment : Fragment() {
_binding = FragmentObtainMessageBinding.inflate(inflater, container, false)
val root: View = binding.root
+ voiceView =
+ LayoutInflater.from(requireActivity()).inflate(R.layout.widget_voice_player, null)
+ .findViewById(R.id.voicePlayerView)
+ _binding!!.llAudioPlay.addView(voiceView)
var messege = arguments?.getParcelable("message")
if (messege == null) {
messege = GreetingMessage(who = obtainMessageViewModel.username)
@@ -493,12 +500,12 @@ class ObtainMessageFragment : Fragment() {
}
override fun success(file: File) {
- binding.voicePlayerView.setAudio(localFile.absolutePath)
+ voiceView.setAudio(localFile.absolutePath)
}
})
} else {
- binding.voicePlayerView.setAudio(localFile.absolutePath)
+ voiceView.setAudio(localFile.absolutePath)
}
}
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index c3d2a4e..733bb88 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -1,47 +1,54 @@
-
+ xmlns:tools="http://schemas.android.com/tools">
-
+
-
+
+
+
+
-
+ android:layout_marginLeft="20dp"
+ android:layout_marginTop="5dp"
+ android:layout_marginRight="20dp"
+ app:layout_constraintLeft_toLeftOf="parent"
+ app:layout_constraintRight_toRightOf="parent"
+ app:layout_constraintTop_toTopOf="parent">
-
+
+
-
+
-
+
+
+
-
+
+
diff --git a/app/src/main/res/layout/fragment_obtain_message.xml b/app/src/main/res/layout/fragment_obtain_message.xml
index 6808b3c..bc59fb2 100644
--- a/app/src/main/res/layout/fragment_obtain_message.xml
+++ b/app/src/main/res/layout/fragment_obtain_message.xml
@@ -232,24 +232,7 @@
android:layout_gravity="center"
android:visibility="gone"
android:orientation="horizontal">
-
+
+ android:layout_height="match_parent"
+ xmlns:app="http://schemas.android.com/apk/res-auto">
+ android:text="暂无数据,可下拉刷新" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/widget_voice_player.xml b/app/src/main/res/layout/widget_voice_player.xml
new file mode 100644
index 0000000..5fb9c83
--- /dev/null
+++ b/app/src/main/res/layout/widget_voice_player.xml
@@ -0,0 +1,22 @@
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml
index 75fca9f..c7c719a 100644
--- a/app/src/main/res/navigation/mobile_navigation.xml
+++ b/app/src/main/res/navigation/mobile_navigation.xml
@@ -24,13 +24,11 @@
tools:layout="@layout/fragment_home">
+ app:destination="@id/navigation_obtain_message" />
+ app:nullable="true" />
-
+ tools:layout="@layout/fragment_obtain_message">
\ No newline at end of file