Adapter and model of commentaries maked
This commit is contained in:
parent
6413bb078d
commit
9bf8ea0483
@ -27,11 +27,11 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte
|
|||||||
private lateinit var recyclerView: RecyclerView
|
private lateinit var recyclerView: RecyclerView
|
||||||
private lateinit var viewAdapter: RecyclerView.Adapter<*>
|
private lateinit var viewAdapter: RecyclerView.Adapter<*>
|
||||||
private lateinit var viewManager: RecyclerView.LayoutManager
|
private lateinit var viewManager: RecyclerView.LayoutManager
|
||||||
val client: Videos = Videos()
|
private val client: Videos = Videos()
|
||||||
private lateinit var lastItem: MenuItem
|
private lateinit var lastItem: MenuItem
|
||||||
private lateinit var subItem: MenuItem
|
private lateinit var subItem: MenuItem
|
||||||
lateinit var myMenu: Menu
|
lateinit var myMenu: Menu
|
||||||
val _db = Database(this)
|
private val _db = Database(this)
|
||||||
var section: String = ""
|
var section: String = ""
|
||||||
|
|
||||||
|
|
||||||
@ -67,7 +67,7 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Generic function for set data to RecyclerView
|
// Generic function for set data to RecyclerView
|
||||||
fun setData(data:ArrayList<VideoModel>){
|
private fun setData(data:ArrayList<VideoModel>){
|
||||||
viewAdapter = VideosAdapter(data)
|
viewAdapter = VideosAdapter(data)
|
||||||
|
|
||||||
recyclerView = findViewById<RecyclerView>(R.id.list).apply {
|
recyclerView = findViewById<RecyclerView>(R.id.list).apply {
|
||||||
@ -84,7 +84,7 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte
|
|||||||
swipeContainer.isRefreshing = false
|
swipeContainer.isRefreshing = false
|
||||||
}
|
}
|
||||||
|
|
||||||
fun refresh(){
|
private fun refresh(){
|
||||||
swipeContainer.isRefreshing = true
|
swipeContainer.isRefreshing = true
|
||||||
when(section){
|
when(section){
|
||||||
"local" -> this.getLocalVideos()
|
"local" -> this.getLocalVideos()
|
||||||
@ -100,7 +100,7 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getSubscriptionVideos(){
|
private fun getSubscriptionVideos(){
|
||||||
if(ManagerSingleton.user.status != 1){
|
if(ManagerSingleton.user.status != 1){
|
||||||
ManagerSingleton.Toast("Inicia session primero")
|
ManagerSingleton.Toast("Inicia session primero")
|
||||||
startActivity(Intent(this, LoginActivity::class.java))
|
startActivity(Intent(this, LoginActivity::class.java))
|
||||||
@ -118,7 +118,7 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Last videos
|
// Last videos
|
||||||
fun getLastVideos(){
|
private fun getLastVideos(){
|
||||||
swipeContainer.isRefreshing = true
|
swipeContainer.isRefreshing = true
|
||||||
section = "last"
|
section = "last"
|
||||||
setTitle(R.string.title_recent)
|
setTitle(R.string.title_recent)
|
||||||
@ -130,8 +130,8 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
// Popular videos
|
||||||
fun getPopularVideos(){
|
private fun getPopularVideos(){
|
||||||
swipeContainer.isRefreshing = true
|
swipeContainer.isRefreshing = true
|
||||||
section = "popular"
|
section = "popular"
|
||||||
setTitle(R.string.title_popular)
|
setTitle(R.string.title_popular)
|
||||||
@ -143,7 +143,8 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getLocalVideos(){
|
// Local videos
|
||||||
|
private fun getLocalVideos(){
|
||||||
swipeContainer.isRefreshing = true
|
swipeContainer.isRefreshing = true
|
||||||
section = "local"
|
section = "local"
|
||||||
setTitle(R.string.title_local)
|
setTitle(R.string.title_local)
|
||||||
@ -155,7 +156,8 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getMyVideos(){
|
// Videos of user
|
||||||
|
private fun getMyVideos(){
|
||||||
swipeContainer.isRefreshing = true
|
swipeContainer.isRefreshing = true
|
||||||
section = "my_videos"
|
section = "my_videos"
|
||||||
setTitle(R.string.title_myVideos)
|
setTitle(R.string.title_myVideos)
|
||||||
@ -266,7 +268,7 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun logout(){
|
private fun logout(){
|
||||||
if(::myMenu.isInitialized){
|
if(::myMenu.isInitialized){
|
||||||
myMenu.findItem(R.id.action_login).isVisible = true
|
myMenu.findItem(R.id.action_login).isVisible = true
|
||||||
myMenu.findItem(R.id.action_logout).isVisible = false
|
myMenu.findItem(R.id.action_logout).isVisible = false
|
||||||
|
@ -6,10 +6,14 @@ import android.support.v7.app.AppCompatActivity
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.os.Looper
|
import android.os.Looper
|
||||||
import android.support.v4.content.ContextCompat
|
import android.support.v4.content.ContextCompat
|
||||||
|
import android.support.v7.widget.LinearLayoutManager
|
||||||
|
import android.support.v7.widget.RecyclerView
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import com.squareup.picasso.Picasso
|
import com.squareup.picasso.Picasso
|
||||||
|
import kotlinx.android.synthetic.main.activity_main.*
|
||||||
import kotlinx.android.synthetic.main.activity_reproductor.*
|
import kotlinx.android.synthetic.main.activity_reproductor.*
|
||||||
|
import org.libre.agosto.p2play.adapters.CommentariesAdapter
|
||||||
import org.libre.agosto.p2play.ajax.Actions
|
import org.libre.agosto.p2play.ajax.Actions
|
||||||
import org.libre.agosto.p2play.models.VideoModel
|
import org.libre.agosto.p2play.models.VideoModel
|
||||||
|
|
||||||
@ -17,6 +21,11 @@ class ReproductorActivity : AppCompatActivity() {
|
|||||||
lateinit var video:VideoModel
|
lateinit var video:VideoModel
|
||||||
private val _actions: Actions = Actions()
|
private val _actions: Actions = Actions()
|
||||||
|
|
||||||
|
// Commentaries adapter values
|
||||||
|
private lateinit var recyclerView: RecyclerView
|
||||||
|
private lateinit var viewAdapter: RecyclerView.Adapter<*>
|
||||||
|
private lateinit var viewManager: RecyclerView.LayoutManager
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContentView(R.layout.activity_reproductor)
|
setContentView(R.layout.activity_reproductor)
|
||||||
@ -30,6 +39,30 @@ class ReproductorActivity : AppCompatActivity() {
|
|||||||
videoView.settings.allowUniversalAccessFromFileURLs = true
|
videoView.settings.allowUniversalAccessFromFileURLs = true
|
||||||
videoView.settings.domStorageEnabled = true
|
videoView.settings.domStorageEnabled = true
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
viewManager = LinearLayoutManager(this)
|
||||||
|
|
||||||
|
// Set data for RecyclerView
|
||||||
|
viewAdapter = CommentariesAdapter(arrayListOf())
|
||||||
|
|
||||||
|
recyclerView = findViewById<RecyclerView>(R.id.listCommentaries).apply {
|
||||||
|
// use this setting to improve performance if you know that changes
|
||||||
|
// in content do not change the layout size of the RecyclerView
|
||||||
|
setHasFixedSize(true)
|
||||||
|
|
||||||
|
// use a linear layout manager
|
||||||
|
layoutManager = viewManager
|
||||||
|
|
||||||
|
// specify an viewAdapter (see also next example)
|
||||||
|
adapter = viewAdapter
|
||||||
|
}
|
||||||
|
|
||||||
|
}catch (err: Exception){
|
||||||
|
err.printStackTrace()
|
||||||
|
Log.d("Error", err?.message)
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
this.video = this.intent.extras.getSerializable("video") as VideoModel
|
this.video = this.intent.extras.getSerializable("video") as VideoModel
|
||||||
tittleVideoTxt.text = this.video.name
|
tittleVideoTxt.text = this.video.name
|
||||||
@ -47,13 +80,12 @@ class ReproductorActivity : AppCompatActivity() {
|
|||||||
Log.d("Error", err?.message)
|
Log.d("Error", err?.message)
|
||||||
}
|
}
|
||||||
|
|
||||||
// subscribeBtn.setOnClickListener { ManagerSingleton.Toast(getString(R.string.comming)) }
|
|
||||||
subscribeBtn.setOnClickListener { subscribe() }
|
subscribeBtn.setOnClickListener { subscribe() }
|
||||||
likeLayout.setOnClickListener { rate("like") }
|
likeLayout.setOnClickListener { rate("like") }
|
||||||
dislikeLayout.setOnClickListener { rate("dislike") }
|
dislikeLayout.setOnClickListener { rate("dislike") }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun subscribe(){
|
private fun subscribe(){
|
||||||
val account = this.video.userUuid+"@"+this.video.userHost
|
val account = this.video.userUuid+"@"+this.video.userHost
|
||||||
AsyncTask.execute {
|
AsyncTask.execute {
|
||||||
if (Looper.myLooper() == null)
|
if (Looper.myLooper() == null)
|
||||||
@ -68,7 +100,7 @@ class ReproductorActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun unSubscribe(){
|
private fun unSubscribe(){
|
||||||
val account = this.video.userUuid+"@"+this.video.userHost
|
val account = this.video.userUuid+"@"+this.video.userHost
|
||||||
AsyncTask.execute {
|
AsyncTask.execute {
|
||||||
if (Looper.myLooper() == null)
|
if (Looper.myLooper() == null)
|
||||||
@ -83,7 +115,7 @@ class ReproductorActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun rate(rate: String){
|
private fun rate(rate: String){
|
||||||
AsyncTask.execute {
|
AsyncTask.execute {
|
||||||
if (Looper.myLooper() == null)
|
if (Looper.myLooper() == null)
|
||||||
Looper.prepare()
|
Looper.prepare()
|
||||||
@ -104,7 +136,7 @@ class ReproductorActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getRate(){
|
private fun getRate(){
|
||||||
AsyncTask.execute {
|
AsyncTask.execute {
|
||||||
if (Looper.myLooper() == null)
|
if (Looper.myLooper() == null)
|
||||||
Looper.prepare()
|
Looper.prepare()
|
||||||
@ -128,7 +160,7 @@ class ReproductorActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getSubscription(){
|
private fun getSubscription(){
|
||||||
val account = this.video.userUuid+"@"+this.video.userHost
|
val account = this.video.userUuid+"@"+this.video.userHost
|
||||||
AsyncTask.execute {
|
AsyncTask.execute {
|
||||||
if (Looper.myLooper() == null)
|
if (Looper.myLooper() == null)
|
||||||
@ -140,7 +172,7 @@ class ReproductorActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun changeSubscribeBtn(subscribed: Boolean){
|
private fun changeSubscribeBtn(subscribed: Boolean){
|
||||||
if(subscribed){
|
if(subscribed){
|
||||||
subscribeBtn.text = getText(R.string.unSubscribeBtn)
|
subscribeBtn.text = getText(R.string.unSubscribeBtn)
|
||||||
subscribeBtn.setOnClickListener { this.unSubscribe() }
|
subscribeBtn.setOnClickListener { this.unSubscribe() }
|
||||||
|
@ -0,0 +1,71 @@
|
|||||||
|
package org.libre.agosto.p2play.adapters
|
||||||
|
|
||||||
|
import android.app.Activity
|
||||||
|
import android.content.Intent
|
||||||
|
import android.graphics.drawable.Drawable
|
||||||
|
import android.os.AsyncTask
|
||||||
|
import android.support.v7.widget.RecyclerView
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import android.widget.ImageView
|
||||||
|
import android.widget.LinearLayout
|
||||||
|
import android.widget.TextView
|
||||||
|
import com.squareup.picasso.Picasso
|
||||||
|
import org.libre.agosto.p2play.MainActivity
|
||||||
|
import org.libre.agosto.p2play.ManagerSingleton
|
||||||
|
import org.libre.agosto.p2play.R
|
||||||
|
import org.libre.agosto.p2play.ReproductorActivity
|
||||||
|
import org.libre.agosto.p2play.models.CommentaryModel
|
||||||
|
import org.libre.agosto.p2play.models.VideoModel
|
||||||
|
import java.io.InputStream
|
||||||
|
import java.io.Serializable
|
||||||
|
import java.net.URL
|
||||||
|
|
||||||
|
class CommentariesAdapter(private val myDataset: ArrayList<CommentaryModel>) :
|
||||||
|
RecyclerView.Adapter<CommentariesAdapter.ViewHolder>() {
|
||||||
|
|
||||||
|
// Provide a reference to the views for each data item
|
||||||
|
// Complex data items may need more than one view per item, and
|
||||||
|
// you provide access to all the views for a data item in a view holder.
|
||||||
|
// Each data item is just a string in this case that is shown in a TextView.
|
||||||
|
class ViewHolder(val view: View) : RecyclerView.ViewHolder(view){
|
||||||
|
val userImg: ImageView
|
||||||
|
val username: TextView
|
||||||
|
val commentary: TextView
|
||||||
|
|
||||||
|
init {
|
||||||
|
// Define click listener for the ViewHolder's View
|
||||||
|
username = view.findViewById(R.id.userTxt)
|
||||||
|
commentary = view.findViewById(R.id.userCommentary)
|
||||||
|
userImg = view.findViewById(R.id.userCommentImg)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Create new views (invoked by the layout manager)
|
||||||
|
override fun onCreateViewHolder(parent: ViewGroup,
|
||||||
|
viewType: Int): CommentariesAdapter.ViewHolder {
|
||||||
|
// create a new view
|
||||||
|
val view = LayoutInflater.from(parent.context)
|
||||||
|
.inflate(R.layout.view_video, parent, false) as View
|
||||||
|
// set the view's size, margins, paddings and layout parameters
|
||||||
|
return ViewHolder(view)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Replace the contents of a view (invoked by the layout manager)
|
||||||
|
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||||
|
// - get element from your dataset at this position
|
||||||
|
// - replace the contents of the view with that element
|
||||||
|
holder.username.text = myDataset[position].username
|
||||||
|
|
||||||
|
if(myDataset[position].userImageUrl!="")
|
||||||
|
Picasso.get().load("https://"+ManagerSingleton.url+myDataset[position].userImageUrl).into(holder.userImg);
|
||||||
|
|
||||||
|
holder.commentary.text = myDataset[position].commentary
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return the size of your dataset (invoked by the layout manager)
|
||||||
|
override fun getItemCount() = myDataset.size
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
package org.libre.agosto.p2play.models
|
||||||
|
|
||||||
|
class CommentaryModel (
|
||||||
|
var id: Int = 0,
|
||||||
|
var uuid: Int = 0,
|
||||||
|
var username: String = "",
|
||||||
|
var userImageUrl: String = "",
|
||||||
|
var commentary: String = ""
|
||||||
|
)
|
@ -227,6 +227,14 @@
|
|||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<android.support.v7.widget.RecyclerView
|
||||||
|
android:id="@+id/listCommentaries"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
|
48
app/src/main/res/layout/view_commentary.xml
Normal file
48
app/src/main/res/layout/view_commentary.xml
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<android.support.constraint.ConstraintLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:paddingLeft="10dp"
|
||||||
|
android:paddingRight="10dp">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/userCommentImg"
|
||||||
|
android:layout_width="100dp"
|
||||||
|
android:layout_height="60dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:contentDescription="@string/app_name"
|
||||||
|
app:srcCompat="@drawable/default_avatar" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingLeft="10dp"
|
||||||
|
android:paddingRight="10dp">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/userTxt"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textColor="@android:color/darker_gray"
|
||||||
|
android:textStyle="italic" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/userCommentary"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:autoLink="web"
|
||||||
|
android:linksClickable="true"
|
||||||
|
android:maxLength="1000"
|
||||||
|
android:maxLines="10" />
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
|
</android.support.constraint.ConstraintLayout>
|
Loading…
x
Reference in New Issue
Block a user