package com.example.newapplication.homeFragment
import android.content.Intent
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.core.view.size
import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.viewpager2.widget.ViewPager2
import com.example.newapplication.R
import com.example.newapplication.adapter.AdAdapter
import com.example.newapplication.adapter.NewsAdapter
import com.example.newapplication.adapter.TaskAdapter
import com.example.newapplication.databinding.FragmentHomeBinding
import com.example.newapplication.entity.AdItem
import com.example.newapplication.entity.News
import com.example.newapplication.entity.Task
import com.example.newapplication.taskActivity.DiedaoActivity
import com.example.personalwork.utils.ApiClient
import kotlinx.coroutines.launch
class HomeFragment : Fragment() {
private var _binding: FragmentHomeBinding? = null
private val binding get() = _binding!!
private lateinit var viewPager: ViewPager2
private lateinit var adAdapter: AdAdapter
private val adList = listOf(
AdItem("社区公告", R.drawable.img_1),
AdItem("急救知识", R.drawable.img),
AdItem("安全常识", R.drawable.img_2)
)
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
_binding = FragmentHomeBinding.inflate(inflater, container, false)
val view = binding.root
listPage()
val handler = Handler(Looper.getMainLooper())
val updateAdTask = object : Runnable {
override fun run() {
val currentItem = viewPager.currentItem
viewPager.setCurrentItem((currentItem + 1) % adList.size, true)
handler.postDelayed(this, 5000) // 5秒后再次执行
}
}
// 开始定时任务
handler.postDelayed(updateAdTask, 5000)
viewPager = view.findViewById(R.id.viewPager)
adAdapter = AdAdapter(adList)
viewPager.adapter = adAdapter
return view
}
fun listPage(){
val recyclerView = binding.listItem
val newsList = mutableListOf<News>()
lifecycleScope.launch {
val listResponse = ApiClient.apiService.getNews()
val resultList = listResponse.body()?.data
if(listResponse.isSuccessful && resultList!=null){
for(i in 0 until 5){
val news = resultList.get(i);
newsList.add(news)
}
}else {
Toast.makeText(requireContext(), "查找失败", Toast.LENGTH_SHORT).show()
}
val layoutManager = LinearLayoutManager(requireContext())
recyclerView.layoutManager = layoutManager
val adapter = NewsAdapter(newsList)
recyclerView.adapter = adapter
}
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}
package com.example.newapplication.homeFragment
import android.graphics.Color
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager
import com.example.newapplication.R
import com.example.newapplication.adapter.NewsAdapter
import com.example.newapplication.databinding.FragmentActivityBinding
import com.example.newapplication.databinding.FragmentHomeBinding
import com.example.newapplication.entity.News
import com.example.personalwork.utils.ApiClient
import kotlinx.coroutines.launch
class ActivityFragment : Fragment() {
private var _binding: FragmentActivityBinding? = null
private val binding get() = _binding!!
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = FragmentActivityBinding.inflate(inflater, container, false)
init()
return binding.root
}
fun init(){
listPage()
val btn1 = binding.textView5
val btn2 = binding.textView4
val btn3 = binding.textView3
val btnSearch = binding.btnSearch
btn1.setOnClickListener {
btn1.setTextColor(Color.BLUE)
btn2.setTextColor(Color.BLACK)
btn3.setTextColor(Color.BLACK)
listPage1()
}
btn2.setOnClickListener {
btn1.setTextColor(Color.BLACK)
btn2.setTextColor(Color.BLUE)
btn3.setTextColor(Color.BLACK)
listPage2()
}
btn3.setOnClickListener {
btn1.setTextColor(Color.BLACK)
btn2.setTextColor(Color.BLACK)
btn3.setTextColor(Color.BLUE)
listPage3()
}
btnSearch.setOnClickListener {
searchNews()
}
}
fun listPage(){
val recyclerView = binding.listItem
val newsList = mutableListOf<News>()
lifecycleScope.launch {
val listResponse = ApiClient.apiService.getNews()
val resultList = listResponse.body()?.data
if(listResponse.isSuccessful && resultList!=null){
for(i in 0 until resultList.size){
val news = resultList.get(i);
newsList.add(news)
}
}else {
Toast.makeText(requireContext(), "查找失败", Toast.LENGTH_SHORT).show()
}
val layoutManager = LinearLayoutManager(requireContext())
recyclerView.layoutManager = layoutManager
val adapter = NewsAdapter(newsList)
recyclerView.adapter = adapter
}
}
fun listPage1(){
val recyclerView = binding.listItem
val newsList = mutableListOf<News>()
lifecycleScope.launch {
val listResponse = ApiClient.apiService.getNews()
val resultList = listResponse.body()?.data
if(listResponse.isSuccessful && resultList!=null){
for(i in 0 until resultList.size){
val news = resultList.get(i);
if(news.type.equals("社区公告")){
newsList.add(news)
}
}
}else {
Toast.makeText(requireContext(), "查找失败", Toast.LENGTH_SHORT).show()
}
val layoutManager = LinearLayoutManager(requireContext())
recyclerView.layoutManager = layoutManager
val adapter = NewsAdapter(newsList)
recyclerView.adapter = adapter
}
}
fun listPage2(){
val recyclerView = binding.listItem
val newsList = mutableListOf<News>()
lifecycleScope.launch {
val listResponse = ApiClient.apiService.getNews()
val resultList = listResponse.body()?.data
if(listResponse.isSuccessful && resultList!=null){
for(i in 0 until resultList.size){
val news = resultList.get(i);
if(news.type.equals("急救事项")){
newsList.add(news)
}
}
}else {
Toast.makeText(requireContext(), "查找失败", Toast.LENGTH_SHORT).show()
}
val layoutManager = LinearLayoutManager(requireContext())
recyclerView.layoutManager = layoutManager
val adapter = NewsAdapter(newsList)
recyclerView.adapter = adapter
}
}
fun listPage3(){
val recyclerView = binding.listItem
val newsList = mutableListOf<News>()
lifecycleScope.launch {
val listResponse = ApiClient.apiService.getNews()
val resultList = listResponse.body()?.data
if(listResponse.isSuccessful && resultList!=null){
for(i in 0 until resultList.size){
val news = resultList.get(i);
if(news.type.equals("安全常识")){
newsList.add(news)
}
}
}else {
Toast.makeText(requireContext(), "查找失败", Toast.LENGTH_SHORT).show()
}
val layoutManager = LinearLayoutManager(requireContext())
recyclerView.layoutManager = layoutManager
val adapter = NewsAdapter(newsList)
recyclerView.adapter = adapter
}
}
fun searchNews(){
val recyclerView = binding.listItem
val keyword = binding.editTextText.text.toString()
val newsList = mutableListOf<News>()
lifecycleScope.launch {
val listResponse = ApiClient.apiService.searchNews(keyword)
val resultList = listResponse.body()?.data
if(listResponse.isSuccessful && resultList!=null){
for(i in 0 until resultList.size){
val news = resultList.get(i);
newsList.add(news)
}
}else {
Toast.makeText(requireContext(), "查找失败", Toast.LENGTH_SHORT).show()
}
val layoutManager = LinearLayoutManager(requireContext())
recyclerView.layoutManager = layoutManager
val adapter = NewsAdapter(newsList)
recyclerView.adapter = adapter
}
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}
import android.content.Context
import android.content.Intent
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.example.newapplication.R
import com.example.newapplication.entity.Op
class ListAdapter (private val context: Context, private val opList: List<Op>) :
RecyclerView.Adapter<ListAdapter.OpViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): OpViewHolder {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.item_list, parent, false)
return OpViewHolder(view)
}
override fun onBindViewHolder(holder: OpViewHolder, position: Int) {
val op = opList[position]
holder.icon.setImageResource(IconMapper.getIconResource(op.icon)) // 设置图标
holder.name.text = op.name
holder.itemView.setOnClickListener {
val intent = Intent(context, op.cla)
context.startActivity(intent)
}
}
override fun getItemCount(): Int {
return opList.size
}
inner class OpViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val icon: ImageView = itemView.findViewById(R.id.op_icon)
val name: TextView = itemView.findViewById(R.id.op_name)
}
}