Loading indicator in list

This commit is contained in:
Daniele Verducci (ZenPenguin) 2021-09-01 07:52:19 +02:00
parent d470f7e968
commit c4f1415b94
6 changed files with 36 additions and 12 deletions

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" />
</set>
</option>
</component>
</project>

View File

@ -2,13 +2,7 @@ package it.danieleverducci.subitobeers
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle import android.os.Bundle
import android.util.Log
import android.widget.Toast
import it.danieleverducci.subitobeers.entities.Beer import it.danieleverducci.subitobeers.entities.Beer
import it.danieleverducci.subitobeers.networking.RetrofitProvider
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
class MainActivity : AppCompatActivity() { class MainActivity : AppCompatActivity() {

View File

@ -1,12 +1,14 @@
package it.danieleverducci.subitobeers package it.danieleverducci.subitobeers.ui
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.ImageView import android.widget.ImageView
import android.widget.ProgressBar
import android.widget.TextView import android.widget.TextView
import com.squareup.picasso.Picasso import com.squareup.picasso.Picasso
import it.danieleverducci.subitobeers.R
import it.danieleverducci.subitobeers.databinding.FragmentBeersListitemBinding import it.danieleverducci.subitobeers.databinding.FragmentBeersListitemBinding
import it.danieleverducci.subitobeers.entities.Beer import it.danieleverducci.subitobeers.entities.Beer
@ -55,8 +57,12 @@ class BeerRecyclerAdapter : RecyclerView.Adapter<BeerRecyclerAdapter.ViewHolder>
.into(holder.pic) .into(holder.pic)
// If we are drawing the last element, notify // If we are drawing the last element, notify
if (position == items.size - 1) if (position == items.size - 1) {
holder.progress.visibility = View.VISIBLE
listener?.OnLastItemScrolled() listener?.OnLastItemScrolled()
} else {
holder.progress.visibility = View.GONE
}
} }
fun addItems(ni: List<Beer>) { fun addItems(ni: List<Beer>) {
@ -71,6 +77,7 @@ class BeerRecyclerAdapter : RecyclerView.Adapter<BeerRecyclerAdapter.ViewHolder>
val name: TextView = binding.beerItemName val name: TextView = binding.beerItemName
val descr: TextView = binding.beerItemDescr val descr: TextView = binding.beerItemDescr
val pic: ImageView = binding.beerItemPic val pic: ImageView = binding.beerItemPic
val progress: ProgressBar = binding.beerItemProgress
} }
interface Listener { interface Listener {

View File

@ -1,4 +1,4 @@
package it.danieleverducci.subitobeers package it.danieleverducci.subitobeers.ui
import android.os.Bundle import android.os.Bundle
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
@ -8,6 +8,8 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.Toast import android.widget.Toast
import it.danieleverducci.subitobeers.BeersRepository
import it.danieleverducci.subitobeers.R
import it.danieleverducci.subitobeers.entities.Beer import it.danieleverducci.subitobeers.entities.Beer
/** /**

View File

@ -9,5 +9,5 @@
android:layout_marginLeft="16dp" android:layout_marginLeft="16dp"
android:layout_marginRight="16dp" android:layout_marginRight="16dp"
app:layoutManager="LinearLayoutManager" app:layoutManager="LinearLayoutManager"
tools:context=".BeersFragment" tools:context=".ui.BeersFragment"
tools:listitem="@layout/fragment_beers_listitem" /> tools:listitem="@layout/fragment_beers_listitem" />

View File

@ -12,7 +12,6 @@
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:layout_marginBottom="10dp" android:layout_marginBottom="10dp"
android:src="@mipmap/ic_launcher" android:src="@mipmap/ic_launcher"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -47,9 +46,21 @@
android:ellipsize="end" android:ellipsize="end"
android:maxLines="3" android:maxLines="3"
android:text="Beer description lorem ipsum dolor sit amet" android:text="Beer description lorem ipsum dolor sit amet"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="@+id/beer_item_pic"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/beer_item_pic" app:layout_constraintStart_toEndOf="@+id/beer_item_pic"
app:layout_constraintTop_toBottomOf="@+id/beer_item_name" /> app:layout_constraintTop_toBottomOf="@+id/beer_item_name" />
<ProgressBar
android:id="@+id/beer_item_progress"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginBottom="50dp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/beer_item_pic" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>