add delete and refresh
All checks were successful
continuous-integration/drone/push Build is passing

- add swipe to delete
- add pull to refresh
This commit is contained in:
Raffaele Mignone 2019-12-01 19:39:41 +01:00
parent 90e31fbf16
commit 75e88ef617
Signed by: norangebit
GPG Key ID: F5255658CB220573
4 changed files with 52 additions and 3 deletions

View File

@ -54,6 +54,8 @@ dependencies {
api "org.jetbrains.kotlinx:kotlinx-coroutines-android:$rootProject.coroutines"
// UI
implementation "com.google.android.material:material:$rootProject.materialVersion"
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
// TESTING

View File

@ -4,7 +4,9 @@ import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import it.unisannio.ding.ids.wedroid.app.R
import it.unisannio.ding.ids.wedroid.app.view.adapter.BoardsListAdapter
import it.unisannio.ding.ids.wedroid.app.viewmodel.BoardsListViewModel
@ -25,14 +27,45 @@ class BoardsListsActivity : AppCompatActivity() {
boardList.adapter = adapter
boardList.layoutManager = LinearLayoutManager(this)
swipeLeftToDelete()
pullToRefresh.setColorSchemeColors(getColor(R.color.colorAccent))
viewModel.allBoards.observe(this, Observer {
it.let { adapter.setBoards(it) }
pullToRefresh.isRefreshing = false
})
fab.setOnClickListener { view ->
fab.setOnClickListener {
viewModel.insertBoard("New board")
}
pullToRefresh.setOnRefreshListener {
viewModel.refresh()
}
}
private fun swipeLeftToDelete() {
val swipeToDelete = ItemTouchHelper(
object : ItemTouchHelper.SimpleCallback(
0, ItemTouchHelper.LEFT
) {
override fun onMove(
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder,
target: RecyclerView.ViewHolder
): Boolean {
return false
}
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
val pos = viewHolder.adapterPosition
viewModel.deleteBoard(pos)
}
})
swipeToDelete.attachToRecyclerView(boardList)
}
}

View File

@ -38,7 +38,11 @@ public class BoardsListViewModel extends AndroidViewModel {
repository.insertBoard(title);
}
public void deleteBoard(String id) {
repository.deleteBoard(id);
public void deleteBoard(int position) {
repository.deleteBoard(allBoards.getValue().get(position).getId());
}
public void refresh() {
repository.synchronize();
}
}

View File

@ -7,6 +7,14 @@
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".view.BoardsListsActivity"
tools:showIn="@layout/activity_boards_lists">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:layout_width="0dp"
android:layout_height="0dp"
android:id="@+id/pullToRefresh"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.recyclerview.widget.RecyclerView
android:layout_width="0dp"
@ -16,4 +24,6 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</androidx.constraintlayout.widget.ConstraintLayout>