В настоящее время я делаю несколько приложений, в которых мне нужно использовать файлы JSON и Recyclerviews. На данный момент проблема для меня заключается в том, что я не могу найти решение в Интернете для загрузки видео в веб-обозрение.
Слишком много часов искал в Интернете.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
mainRecyclerView.layoutManager = LinearLayoutManager(this)
val myVideoView = findViewById<WebView>(R.id.webVideoView)
myVideoView.webViewClient = object: WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
view?.loadUrl(url)
return true
}
}
myVideoView.loadUrl("https://www.scorebat.com/embed/")
fetchJSON()
}
fun fetchJSON(){
val url = "https://www.scorebat.com/video-api/v1/"
val request = Request.Builder().url(url).build()
val client = OkHttpClient()
client.newCall(request).enqueue(object: Callback{
override fun onResponse(call: Call, response: Response) {
val body = response.body()?.string()
println(body)
val gson = GsonBuilder().create()
val mainCollection = gson.fromJson(body, Array<Match>::class.java)
runOnUiThread {
mainRecyclerView.adapter = MainAdapter(mainCollection)
}
}
override fun onFailure(call: Call, e: IOException) {
println("Failed to execute")
}
})
}
class MainAdapter(val mainCollection: Array<Match>) : RecyclerView.Adapter<CustomViewHolder>(){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustomViewHolder {
val layoutInflater = LayoutInflater.from(parent.context)
val layout = layoutInflater.inflate(R.layout.video_page_football , parent, false)
return CustomViewHolder(layout)
}
override fun onBindViewHolder(holder: CustomViewHolder, position: Int) {
val positioner = mainCollection.get(position)
holder.view.sortTitle.text = positioner.competition.name
holder.view.textTitle.text = positioner.title
val thumbnail = positioner.thumbnail
Picasso.with(holder.view.context).load(thumbnail).into(holder.view.thumbnailImage)
if(positioner.date.contains("T")){
var localDate = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss+SSSS").parse(positioner.date)
holder.view.dateTitle.text = SimpleDateFormat("dd-MM-yyyy '-' HH:mm").format(localDate)
}
holder.view.side1.text = positioner.side1.name
holder.view.side2.text = positioner.side2.name
/*holder.view.webVideoView.loadData("<iframe src=\"https://www.scorebat.com/embed/g/786554/?s=2\" width='300' height='200' allowfullscreen" +
" allow='autoplay; fullscreen' overflow:hidden;display:block;'class='_scorebatEmbeddedPlayer_'></iframe>", "text/html", "utf-8")*/
}
override fun getItemCount(): Int {
return 1
}
}
class CustomViewHolder(val view: View, var video: Match?= null): RecyclerView.ViewHolder(view){
companion object{
val VIDEO_TITLE_KEY = "VIDEO_TITLE"
val VIDEO_URL_KEY = "VIDEO_URL"
}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/sortTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="Sort Title"
android:textAlignment="center"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="Match Title"
android:textAlignment="center"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/sortTitle" />
<WebView
android:id="@+id/webVideoView"
android:layout_width="300dp"
android:layout_height="200dp"
android:layout_marginTop="10dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.495"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textTitle" />
<TextView
android:id="@+id/dateTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="65dp"
android:text="Date"
android:textSize="18sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/webVideoView" />
<Button
android:id="@+id/side1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="Side1"
app:layout_constraintEnd_toStartOf="@+id/dateTitle"
app:layout_constraintStart_toStartOf="@+id/webVideoView"
app:layout_constraintTop_toBottomOf="@+id/dateTitle" />
<Button
android:id="@+id/side2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="Side2"
app:layout_constraintEnd_toEndOf="@+id/webVideoView"
app:layout_constraintStart_toEndOf="@+id/dateTitle"
app:layout_constraintTop_toBottomOf="@+id/dateTitle" />
<WebView
android:id="@+id/statisticsView"
android:layout_width="300dp"
android:layout_height="200dp"
android:layout_marginTop="10dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/side2" />
<ImageView
android:id="@+id/thumbnailImage"
android:layout_width="300dp"
android:layout_height="200dp"
android:layout_marginTop="10dp"
android:onClick="thumbnailClicked"
android:visibility="invisible"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textTitle"
app:srcCompat="@mipmap/ic_launcher" />
<ImageButton
android:id="@+id/pauseButton"
android:layout_width="50dp"
android:layout_height="50dp"
android:adjustViewBounds="true"
android:onClick="pauseClicked"
android:scaleType="fitCenter"
app:layout_constraintEnd_toEndOf="@+id/webVideoView"
app:layout_constraintStart_toStartOf="@+id/webVideoView"
app:layout_constraintTop_toBottomOf="@+id/webVideoView"
app:srcCompat="@drawable/iconfinder_button_pause_67775" />
<ImageButton
android:id="@+id/playButton"
android:layout_width="50dp"
android:layout_height="50dp"
android:adjustViewBounds="true"
android:onClick="playClicked"
android:scaleType="fitCenter"
app:layout_constraintEnd_toEndOf="@+id/webVideoView"
app:layout_constraintStart_toStartOf="@+id/webVideoView"
app:layout_constraintTop_toBottomOf="@+id/webVideoView"
app:srcCompat="@drawable/iconfinder_button_play_67776" />
</androidx.constraintlayout.widget.ConstraintLayout>
В настоящее время на экране появляется полоса загрузки и белый фон. Похоже, что он еще не вписывается в мой веб-просмотр, но это, вероятно, потому, что фиксированная высота и вес внутри детали из файла JSON.