[我正在尝试infalte activitymain.xml文件,但我不知道为什么适配器类没有被膨胀

问题描述 投票:0回答:1

这是我的适配器类,尝试使用video_View扩展回收器视图,而arraylist的值最终为0。我尝试了很多方法使其工作,但每次都不会使recyclerView膨胀。

适配器类:

class Video_adapter(var videolist: ArrayList<String>):RecyclerView.Adapter<Video_adapter.ViewHolder>(){


    class ViewHolder(view: CardView):RecyclerView.ViewHolder(view){
        val video:VideoView = view.findViewById(R.id.video)


    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val view = LayoutInflater.from(parent.context).inflate(R.layout.video_view,parent,false) as CardView
        Log.i("OnCreateView","OnCreateViewHolder is working")
        return ViewHolder(view)
    }

    override fun getItemCount(): Int {
       return videolist.size
        Log.i("Video_list1",videolist.size.toString())
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        var video = videolist[position]
        holder.video.setVideoURI(video.toUri())
        holder.video.setOnTouchListener( View.OnTouchListener { v, event ->
            if (event.action == MotionEvent.ACTION_DOWN){
                holder.video.start()
            }
            true
        })
    }
}

这是我的主要Kotlin文件

class MainActivity : AppCompatActivity() {


    lateinit var toolbar: androidx.appcompat.widget.Toolbar
    lateinit var recyclerView: RecyclerView
    lateinit var layoutManager: RecyclerView.LayoutManager
    lateinit var recycleradpter:Video_adapter
    lateinit var videolist: ArrayList<String>




    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        toolbar = findViewById(R.id.toolbar)
        recyclerView = findViewById(R.id.recycler_view)
        layoutManager = LinearLayoutManager(this)
        recyclerView.layoutManager = layoutManager
        videolist = ArrayList()
        getJson()
        Log.i("Video_list",videolist.size.toString())
        recycleradpter = Video_adapter(videolist)
        Log.i("Video_list",videolist.size.toString())
        recyclerView.adapter = recycleradpter


    }
    fun getJson(){
        val url = "https://raw.githubusercontent.com/bikashthapa01/myvideos-android-app/master/data.json"
        val queue = Volley.newRequestQueue(this)
        //volley request
        val request = JsonObjectRequest(Request.Method.GET,url,null,Response.Listener<JSONObject>{ response ->
            try {
                val categories = response.getJSONArray("categories")
                for (i in 0 until categories.length()){
                    val category = categories.getJSONObject(i)
                    val videos = category.getJSONArray("videos")
                    for (i in 0 until videos.length()){
                        val video = videos.getJSONObject(i)
                        val source = video.getString("sources")
                        videolist.add(source)
                        Log.i("Url",source)
                        Toast.makeText(this,"Json request working",Toast.LENGTH_LONG).show()
                    }
                }

            }
            catch (e:JSONException){
                Log.i("error ",e.toString())

            }


        },Response.ErrorListener {error ->

            Log.i("JSon_request_error",error.toString())


        })
        Log.i("Video_list",videolist.size.toString())

        queue.add(request)
    }


}

我无法找到代码有什么问题,为什么它没有使回收者视图夸大。

android kotlin android-recyclerview recycler-adapter
1个回答
1
投票
在getJson方法调用中的for循环之后recycleradpter.notifyDataSetChanged()刷新RecyclerView。
© www.soinside.com 2019 - 2024. All rights reserved.