package it.unisannio.ding.ids.wedroid.app.view; import android.content.Intent; import android.content.res.ColorStateList; import android.os.Bundle; import android.view.View; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.ItemTouchHelper; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.google.android.material.floatingactionbutton.FloatingActionButton; import java.util.List; import java.util.Objects; import it.unisannio.ding.ids.wedroid.app.R; import it.unisannio.ding.ids.wedroid.app.data.entity.WList; import it.unisannio.ding.ids.wedroid.app.util.SharedPreferenceHelper; import it.unisannio.ding.ids.wedroid.app.view.adapter.WListsAdapter; import it.unisannio.ding.ids.wedroid.app.viewmodel.WListsListViewModel; public class WListsListActivity extends AppCompatActivity { Toolbar myToolbar; int barColor; WListsListViewModel viewModel; RecyclerView recyclerView; //SwipeRefreshLayout swipeRefreshLayout; SharedPreferenceHelper sp; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_wlists_view); myToolbar = findViewById(R.id.my_toolbar); setSupportActionBar(myToolbar); //swipeRefreshLayout = findViewById(R.id.pullToRefresh); sp = new SharedPreferenceHelper(this); Intent i = getIntent(); String boardTitle = i.getStringExtra("barTitle"); Objects.requireNonNull(getSupportActionBar()).setTitle(boardTitle); barColor = i.getIntExtra("barColor", 0); setResult(WListsListActivity.RESULT_OK, i); myToolbar.setBackgroundColor(barColor); recyclerView = findViewById(R.id.recyclerviewWList); initializeUi(sp.getBoardId()); FloatingActionButton fab = findViewById(R.id.synchronize); fab.setBackgroundTintList(ColorStateList.valueOf(barColor)); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { viewModel.refresh(); } }); } private void initializeUi(final String idBoard) { final WListsAdapter adapter = new WListsAdapter(this); recyclerView.setAdapter(adapter); recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); //recyclerView.setHasFixedSize(true); viewModel = new ViewModelProvider(this).get(WListsListViewModel.class); viewModel.getAllWLists().observe(this, new Observer>() { @Override public void onChanged(List wLists) { adapter.setWLists(wLists); } }); swipeBottomToDelete(idBoard); /* BUG REPORT: Refresh of page enter in conflict with swipe down for delete list * swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { viewModel.refresh(); } });*/ } private void swipeBottomToDelete(final String idBoard) { ItemTouchHelper.SimpleCallback simpleCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.DOWN) { @Override public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) { return true; } @Override public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) { int pos = viewHolder.getAdapterPosition(); viewModel.deleteWList(pos, idBoard); Toast.makeText(getApplicationContext(), "List deleted", Toast.LENGTH_LONG).show(); } }; new ItemTouchHelper(simpleCallback).attachToRecyclerView(recyclerView); } }