Untitled
unknown
plain_text
a year ago
2.9 kB
5
Indexable
class VideoListFragment : Fragment() { private lateinit var viewModel: VideoViewModel private lateinit var adapter: VideoAdapter private lateinit var contentObserver: ContentObserver override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { return inflater.inflate(R.layout.fragment_video_list, container, false) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) viewModel = ViewModelProvider(this).get(VideoViewModel::class.java) val recyclerView = view.findViewById<RecyclerView>(R.id.recyclerView) recyclerView.layoutManager = LinearLayoutManager(context) adapter = VideoAdapter(emptyList()) recyclerView.adapter = adapter viewModel.videos.observe(viewLifecycleOwner, Observer { videos -> adapter.updateVideos(videos) }) val handler = Handler(Looper.getMainLooper()) contentObserver = object : ContentObserver(handler) { override fun onChange(selfChange: Boolean, uri: Uri?) { super.onChange(selfChange, uri) if (uri != null) { val videoId = uri.lastPathSegment ?: return viewModel.removeVideo(videoId) } } } requireContext().contentResolver.registerContentObserver( MediaStore.Video.Media.EXTERNAL_CONTENT_URI, true, contentObserver ) // Lấy danh sách video ban đầu từ Gallery fetchVideosFromGallery() } override fun onDestroyView() { super.onDestroyView() requireContext().contentResolver.unregisterContentObserver(contentObserver) } private fun fetchVideosFromGallery() { val videoList = mutableListOf<Video>() val projection = arrayOf( MediaStore.Video.Media._ID, MediaStore.Video.Media.DISPLAY_NAME, MediaStore.Video.Media.DATA ) val cursor = requireContext().contentResolver.query( MediaStore.Video.Media.EXTERNAL_CONTENT_URI, projection, null, null, null ) cursor?.use { val idColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Media._ID) val titleColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME) val dataColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA) while (cursor.moveToNext()) { val id = cursor.getString(idColumn) val title = cursor.getString(titleColumn) val data = cursor.getString(dataColumn) videoList.add(Video(id, title, data)) } } viewModel.updateVideos(videoList) } }
Editor is loading...
Leave a Comment