Я пытаюсь понять, activitymain.xml файл, но я не знаю, почему класс адаптера не раздувается

#android #kotlin #android-recyclerview

Вопрос:

Этот мой класс адаптера, который пытается раздуть представление переработчика с помощью video_View и списка массивов, в конечном итоге получает значение 0. Я перепробовал множество методов, чтобы заставить его работать, но каждый раз он каждый раз не раздувает обзор вторсырья.

Класс адаптера:

 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)
    }


}
 

Я не могу найти, что не так с кодом, почему он не раздувает представление переработчика.

Ответ №1:

После цикла for в вызове метода recycleradpter.notifyDataSetChanged() getJSON, чтобы обновить RecyclerView.

Комментарии:

1. @SUPERADI вы получаете какие-либо ошибки? вызовите getJSON() в onCreate после установки recyclerView.adapter = recycleradpter . Журнал ` Log.i(«Video_list»,videolist.size.toString ()) » вернет ноль, поскольку запрос на залп является асинхронным.

2. Попробовал и этот тоже, ничего не вышло.

3. Это ссылка на репозиторий проекта. Если бы вы могли мне помочь

4. Ссылка недоступна. это частное репо?

5. Я опубликовал репо, теперь вы можете его проверить.