diff --git a/app/src/main/java/com/example/notatkon/adapter/NoteAdapter.java b/app/src/main/java/com/example/notatkon/adapter/NoteAdapter.java index f4a1276..80bca8c 100644 --- a/app/src/main/java/com/example/notatkon/adapter/NoteAdapter.java +++ b/app/src/main/java/com/example/notatkon/adapter/NoteAdapter.java @@ -1,5 +1,7 @@ package com.example.notatkon.adapter; +import android.os.Handler; +import android.os.Looper; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -15,20 +17,30 @@ import com.example.notatkon.listener.NoteListener; import java.util.ArrayList; import java.util.List; +import java.util.Timer; +import java.util.TimerTask; -//https://developer.android.com/guide/topics/ui/layout/recyclerview +/* +https://developer.android.com/guide/topics/ui/layout/recyclerview +https://developer.android.com/reference/java/util/Timer -/* Aby klasa była adapterem musi dziedziczyć po RecyclerView.Adapter oraz wskazywać na ViewHolder */ + + +// Aby klasa była adapterem musi dziedziczyć po RecyclerView.Adapter oraz wskazywać na ViewHolder */ public class NoteAdapter extends RecyclerView.Adapter{ private List listNotes; + private List source; private NoteListener noteListener; + private Timer searchTimer; + //konstruktor public NoteAdapter(List listNotes, NoteListener noteListener) { this.listNotes = listNotes; this.noteListener = noteListener; + source = listNotes; } //implementacja ViewHoldera @@ -58,6 +70,40 @@ public class NoteAdapter extends RecyclerView.Adapter{ } } + public void searchNote(final String token) { + searchTimer = new Timer(); + searchTimer.schedule(new TimerTask() { + @Override + public void run() { + if (token.trim().isEmpty()) { + listNotes = source; + } else { + ArrayList tempContainer = new ArrayList<>(); + for (NoteEntity noteEntity : source) { + if (noteEntity.getTitle().toLowerCase().contains(token.toLowerCase()) + || noteEntity.getSubtitle().toLowerCase().contains(token.toLowerCase()) + || noteEntity.getContent().toLowerCase().contains(token.toLowerCase())) { + tempContainer.add(noteEntity); + } + } + listNotes = tempContainer; + } + new Handler(Looper.getMainLooper()).post(new Runnable() { + @Override + public void run() { + notifyDataSetChanged(); + } + }); + } + }, 1000); + } + + public void cancelTimer() { + if (searchTimer != null) { + searchTimer.cancel(); + } + } + @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { diff --git a/app/src/main/java/com/example/notatkon/note/CreateNote.java b/app/src/main/java/com/example/notatkon/note/CreateNote.java index 8c98aaf..110703d 100644 --- a/app/src/main/java/com/example/notatkon/note/CreateNote.java +++ b/app/src/main/java/com/example/notatkon/note/CreateNote.java @@ -143,20 +143,19 @@ public class CreateNote extends AppCompatActivity { final BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(bottomToolbar); //wysuwanie dolnego paska narzędzi - bottomToolbar.findViewById(R.id.textBottomToolbar).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (bottomSheetBehavior.getState() != BottomSheetBehavior.STATE_EXPANDED) { - bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); - } else { - bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); - } - } - }); - - if (selectedNote != null) { + bottomToolbar.findViewById(R.id.textBottomToolbar).setVisibility(View.VISIBLE); bottomToolbar.findViewById(R.id.deleteNote).setVisibility(View.VISIBLE); + bottomToolbar.findViewById(R.id.textBottomToolbar).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (bottomSheetBehavior.getState() != BottomSheetBehavior.STATE_EXPANDED) { + bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); + } else { + bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); + } + } + }); bottomToolbar.findViewById(R.id.deleteNote).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -167,7 +166,6 @@ public class CreateNote extends AppCompatActivity { } } - /* https://developer.android.com/guide/topics/ui/dialogs#CustomLayout */ diff --git a/app/src/main/java/com/example/notatkon/note/MainActivity.java b/app/src/main/java/com/example/notatkon/note/MainActivity.java index dd558c5..58bde69 100644 --- a/app/src/main/java/com/example/notatkon/note/MainActivity.java +++ b/app/src/main/java/com/example/notatkon/note/MainActivity.java @@ -4,7 +4,10 @@ import android.annotation.SuppressLint; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; +import android.text.Editable; +import android.text.TextWatcher; import android.util.Log; +import android.widget.EditText; import android.widget.ImageView; import androidx.annotation.Nullable; @@ -70,6 +73,26 @@ public class MainActivity extends AppCompatActivity implements NoteListener { // wyświetl na początku wszystkie notatki z bazy getAllNotes(REQUEST_SHOW_NOTE, false); + + EditText searchNote = findViewById(R.id.inputSearch); + searchNote.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + noteAdapter.cancelTimer(); + } + + @Override + public void afterTextChanged(Editable s) { + if (noteEntityList.size() != 0) { + noteAdapter.searchNote(s.toString()); + } + } + }); } diff --git a/app/src/main/res/drawable/dialog_window.xml b/app/src/main/res/drawable/dialog_window.xml index a0f0bb5..7cd6c22 100644 --- a/app/src/main/res/drawable/dialog_window.xml +++ b/app/src/main/res/drawable/dialog_window.xml @@ -2,6 +2,6 @@ - + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 3a69670..bfb6f07 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -118,41 +118,12 @@ android:padding="@dimen/_10sdp" app:layout_constraintBottom_toBottomOf="parent" > - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/bottom_toolbar.xml b/app/src/main/res/layout/bottom_toolbar.xml index a2d6374..3b221cb 100644 --- a/app/src/main/res/layout/bottom_toolbar.xml +++ b/app/src/main/res/layout/bottom_toolbar.xml @@ -15,6 +15,7 @@ android:layout_width="match_parent" android:layout_height="@dimen/_35sdp" android:text="Opcje" + android:visibility="gone" android:textColor="@color/black" android:textSize="@dimen/_12ssp" android:gravity="center"/> @@ -27,6 +28,7 @@ android:layout_marginEnd="@dimen/_12sdp" android:layout_marginBottom="@dimen/_12sdp" android:orientation="horizontal" + android:visibility="gone" android:gravity="center_vertical" tools:ignore="UseCompoundDrawables">