Selaa lähdekoodia

trying to change RecyclerViewer for fragment

Simon Hammer 3 vuotta sitten
vanhempi
sitoutus
86b1cf43fa

+ 66 - 6
app/src/main/java/com/noahvogt/miniprojekt/MainActivity.java

@@ -1,6 +1,7 @@
 package com.noahvogt.miniprojekt;
 
 import android.content.Intent;
+import android.os.Build;
 import android.os.Bundle;
 
 import android.view.Menu;
@@ -9,6 +10,7 @@ import android.widget.Button;
 import android.widget.EditText;
 import android.widget.Toast;
 
+import androidx.annotation.RequiresApi;
 import androidx.appcompat.app.AlertDialog;
 import androidx.appcompat.app.AppCompatActivity;
 import androidx.appcompat.widget.Toolbar;
@@ -17,8 +19,11 @@ import androidx.fragment.app.DialogFragment;
 
 import com.google.android.material.floatingactionbutton.FloatingActionButton;
 import com.noahvogt.miniprojekt.ui.DataBase.Message;
+import com.noahvogt.miniprojekt.ui.gallery.GalleryFragment;
 import com.noahvogt.miniprojekt.ui.home.CustomAdapter;
 
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
 import androidx.lifecycle.ViewModelProvider;
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
@@ -32,10 +37,13 @@ import androidx.navigation.ui.AppBarConfiguration;
 import androidx.navigation.ui.NavigationUI;
 
 import com.google.android.material.snackbar.Snackbar;
+import com.noahvogt.miniprojekt.ui.home.HomeFragment;
+import com.noahvogt.miniprojekt.ui.slideshow.DraftFragment;
 import com.noahvogt.miniprojekt.ui.slideshow.EmailViewModel;
 
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.List;
 
 import static com.noahvogt.miniprojekt.R.id.drawer_layout;
 
@@ -47,6 +55,9 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
     public static EmailViewModel mEmailViewModel;
     public static int View;
 
+    public static final CustomAdapter adapter = new CustomAdapter(new CustomAdapter.EmailDiff());
+
+
     private AlertDialog dialog;
 
     private EditText newemail_name, newemail_email, newemail_password; // may not be private
@@ -55,7 +66,22 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
     public MainActivity() {
     }
 
+    public String getVisibleFragment(){
+        FragmentManager fragmentManager = MainActivity.this.getSupportFragmentManager();
+        List<Fragment> fragments = fragmentManager.getFragments();
+        if(fragments != null){
+            showToast("not null");
+            for(Fragment fragment : fragments){
+                showToast(fragment.toString());
+                if(fragment.isVisible())
+                    showToast("found visible fragment");
+                    return "is gallery";
+            }
+        } else {
+            showToast("null");}
+            return null;
 
+    }
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -99,17 +125,48 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
         // Lookup the recyclerview in activity layout
         RecyclerView recyclerView = findViewById(R.id.recyclerView);
         final CustomAdapter adapter = new CustomAdapter(new CustomAdapter.EmailDiff());
+
+
         /* Attach the adapter to the recyclerview to populate items */
         recyclerView.setAdapter(adapter);
         recyclerView.setLayoutManager(new LinearLayoutManager(this));
+        //mEmailViewModel = new ViewModelProvider(this).get(EmailViewModel.class);
 
+        mEmailViewModel = new ViewModelProvider(this).get(EmailViewModel.class);
+        mEmailViewModel.getDraftMessage().observe(this, messages -> {
+            /* Update the cached copy of the messages in the adapter*/
+            adapter.submitList(messages);
+        });
 
-            mEmailViewModel = new ViewModelProvider(this).get(EmailViewModel.class);
+           if (GalleryFragment.galleryViewOn) {
+               showToast("gallery True");
+                mEmailViewModel = new ViewModelProvider(this).get(EmailViewModel.class);
+                mEmailViewModel.getDraftMessage().observe(this, messages -> {
+                    /* Update the cached copy of the messages in the adapter*/
+                   adapter.submitList(messages);
+                });
+                //mEmailViewModel.deleteNewMessage();
+            }
+           else if (HomeFragment.homeViewOn){
+               showToast("home True");
+               mEmailViewModel = new ViewModelProvider(this).get(EmailViewModel.class);
+               mEmailViewModel.getDraftMessage().observe(this, messages -> {
+                           /* Update the cached copy of the messages in the adapter*/
+                           adapter.submitList(messages);
+               });
+           }
+           else if (DraftFragment.DraftViewOn){
+               showToast("draft True");
+               mEmailViewModel = new ViewModelProvider(this).get(EmailViewModel.class);
+               mEmailViewModel.getDraftMessage().observe(this, messages -> {
+                   /* Update the cached copy of the messages in the adapter*/
+                   adapter.submitList(messages);
+               });
+           }
+           else {
+               //mEmailViewModel.deleteNewMessage();
+           }
 
-            mEmailViewModel.getDraftMessage().observe(this, messages -> {
-                /* Update the cached copy of the messages in the adapter*/
-                adapter.submitList(messages);
-            });
 
 
         /* Start email Writer*/
@@ -127,7 +184,9 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
     }
 
 
-        /* gets the data from the Email writer and adds it to the Database i think*/
+
+
+        /* gets the data from the Email writer and adds it to the Database I think*/
         public void onActivityResult(int requestCode, int resultCode, Intent data) {
             super.onActivityResult(requestCode, resultCode, data);
 
@@ -201,6 +260,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
         newemail_save_button.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
+
                 // store user input (only needed for DEBUGGING)
                 String name = newemail_name.getText().toString();
                 String email = newemail_email.getText().toString();

+ 7 - 7
app/src/main/java/com/noahvogt/miniprojekt/ui/DataBase/EmailRepository.java

@@ -24,11 +24,9 @@ public class EmailRepository {
         EmailRoomDatabase db = EmailRoomDatabase.getDatabase(application);
         messageDao = db.messageDao();
         mDraftMessage = messageDao.getDraftMessages();
-        /*mArchiveMessage = messageDao.getArchiveMessages();
-        mInboxMessage = messageDao.getInboxMessages();
-        mSentMessage = messageDao.getSentMessages();
-
-         */
+       // mArchiveMessage = messageDao.getArchiveMessages();
+       // mInboxMessage = messageDao.getInboxMessages();
+      //  mSentMessage = messageDao.getSentMessages();
     }
 
     // Room executes all queries on a separate thread.
@@ -38,7 +36,10 @@ public class EmailRepository {
         return mDraftMessage;
     }
 
-    /*
+    public void deleteNewMessage(){
+        messageDao.deleteNewMessage();
+    }
+
     public LiveData<List<Message>> getInboxMessages() {
         return mInboxMessage;
     }
@@ -51,7 +52,6 @@ public class EmailRepository {
         return mArchiveMessage;
     }
 
-     */
 
 
     // You must call this on a non-UI thread or your app will throw an exception. Room ensures

+ 8 - 11
app/src/main/java/com/noahvogt/miniprojekt/ui/DataBase/EmailRoomDatabase.java

@@ -65,25 +65,22 @@ public abstract class EmailRoomDatabase extends RoomDatabase{
                 MessageDao dao = INSTANCE.messageDao();
                 dao.deleteAll();
 
-                Message word = new Message("Simon", null, null,
+               Message word = new Message("Simon", null, null,
                         "YungBoy", "28.8.21", "testing", "I want to try it", "Draft",
                         true);
                 dao.insert(word);
 
                 word = new Message("Noah", null , null,
-                        "Samuel", "31.9.21", "draftTest", "I Try my best", "Draft",
+                        "Samuel", "31.9.21", "draftTest", "I Try my best", "Inbox",
                         true);
-                dao.insert(word);
+                dao.delete(word);
+
+
+
+
+
 
-                word = new Message("Noah", null , null,
-                        "Peter", "31.9.21", "draftTest", "I Try my best", "Draft",
-                        true);
-                dao.insert(word);
 
-                word = new Message("Noah", null , null,
-                        "Peter", "31.9.21", "draftTest", "I Try my best", "Inbox",
-                        true);
-                dao.insert(word);
 
             });
         }

+ 7 - 0
app/src/main/java/com/noahvogt/miniprojekt/ui/DataBase/MessageDao.java

@@ -2,6 +2,7 @@ package com.noahvogt.miniprojekt.ui.DataBase;
 
 import androidx.lifecycle.LiveData;
 import androidx.room.Dao;
+import androidx.room.Delete;
 import androidx.room.Insert;
 import androidx.room.OnConflictStrategy;
 import androidx.room.Query;
@@ -34,6 +35,12 @@ public interface MessageDao {
     @Query("DELETE FROM message_table")
     void deleteAll();
 
+    @Query("DELETE FROM message_table WHERE subject='DELETE'")
+    void deleteNewMessage();
+
+    @Delete(entity = Message.class)
+    void delete(Message message);
+
     @Query("SELECT * FROM message_table")
     LiveData<List<Message>> getAllMessages();
 

+ 18 - 1
app/src/main/java/com/noahvogt/miniprojekt/ui/gallery/GalleryFragment.java

@@ -5,6 +5,7 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.TextView;
+import android.widget.Toast;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
@@ -15,16 +16,30 @@ import androidx.lifecycle.ViewModelProvider;
 import com.noahvogt.miniprojekt.MainActivity;
 import com.noahvogt.miniprojekt.R;
 import com.noahvogt.miniprojekt.ui.home.CustomAdapter;
+import com.noahvogt.miniprojekt.ui.slideshow.EmailViewModel;
 
 public class GalleryFragment extends Fragment {
 
     private GalleryViewModel galleryViewModel;
-    private String Sent;
+    public static boolean galleryViewOn;
+    public static EmailViewModel mEmailViewModel;
 
     public View onCreateView(@NonNull LayoutInflater inflater,
                              ViewGroup container, Bundle savedInstanceState) {
 
         MainActivity.View = 1;
+        galleryViewOn = true;
+
+        mEmailViewModel = new ViewModelProvider(this).get(EmailViewModel.class);
+        Toast.makeText(getContext(), mEmailViewModel.toString() , Toast.LENGTH_SHORT).show();
+        mEmailViewModel.getDraftMessage().observe(getViewLifecycleOwner(), messages -> {
+            /* Update the cached copy of the messages in the adapter*/
+            MainActivity.adapter.submitList(messages);
+        });
+       // mEmailViewModel.deleteNewMessage();
+
+        Toast.makeText(getContext(), "clicked sent", Toast.LENGTH_SHORT).show();
+
 
         galleryViewModel =
                 new ViewModelProvider(this).get(GalleryViewModel.class);
@@ -38,4 +53,6 @@ public class GalleryFragment extends Fragment {
         });
         return root;
     }
+
+
 }

+ 1 - 1
app/src/main/java/com/noahvogt/miniprojekt/ui/home/CustomAdapter.java

@@ -29,11 +29,11 @@ public class CustomAdapter extends ListAdapter<Message, EmailViewHolder> {
         return EmailViewHolder.create(parent);
     }
 
+    /* bind data to View*/
     @Override
     public void onBindViewHolder(EmailViewHolder holder, int position) {
         Message current = getItem(position);
         holder.bind(current.getFrom(),current.getSubject(), current.getDate() ,current.getTextContent());
-
     }
 
     public static class EmailDiff extends DiffUtil.ItemCallback<Message> {

+ 4 - 0
app/src/main/java/com/noahvogt/miniprojekt/ui/home/HomeFragment.java

@@ -19,10 +19,12 @@ import com.noahvogt.miniprojekt.R;
 public class HomeFragment extends Fragment {
 
     private HomeViewModel homeViewModel;
+    public static boolean homeViewOn;
 
     public View onCreateView(@NonNull LayoutInflater inflater,
                              ViewGroup container, Bundle savedInstanceState) {
 
+        homeViewOn = true;
         homeViewModel =
                 new ViewModelProvider(this).get(HomeViewModel.class);
         View root = inflater.inflate(R.layout.fragment_home, container, false);
@@ -37,4 +39,6 @@ public class HomeFragment extends Fragment {
     }
 
 
+
+
 }

+ 7 - 3
app/src/main/java/com/noahvogt/miniprojekt/ui/slideshow/DraftFragment.java

@@ -15,11 +15,13 @@ import androidx.lifecycle.ViewModelProvider;
 import com.noahvogt.miniprojekt.R;
 
 public class DraftFragment extends Fragment {
-/*
-    private DraftViewModel draftViewModel;
+
+   private DraftViewModel draftViewModel;
+    public static boolean DraftViewOn;
 
     public View onCreateView(@NonNull LayoutInflater inflater,
                              ViewGroup container, Bundle savedInstanceState) {
+    DraftViewOn = true;
 
         draftViewModel =
                 new ViewModelProvider(this).get(DraftViewModel.class);
@@ -35,7 +37,9 @@ public class DraftFragment extends Fragment {
     }
 
 
- */
+
+
+
 
 }
 

+ 19 - 0
app/src/main/java/com/noahvogt/miniprojekt/ui/slideshow/DraftViewModel.java

@@ -0,0 +1,19 @@
+package com.noahvogt.miniprojekt.ui.slideshow;
+
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.MutableLiveData;
+import androidx.lifecycle.ViewModel;
+
+public class DraftViewModel extends ViewModel {
+
+    private MutableLiveData<String> mText;
+
+    public DraftViewModel() {
+        mText = new MutableLiveData<>();
+        mText.setValue("This is slideshow fragment");
+    }
+
+    public LiveData<String> getText() {
+        return mText;
+    }
+}

+ 10 - 5
app/src/main/java/com/noahvogt/miniprojekt/ui/slideshow/EmailViewModel.java

@@ -23,14 +23,19 @@ public class EmailViewModel extends AndroidViewModel {
     public EmailViewModel(Application application) {
         super(application);
         mEmailRepository = new EmailRepository(application);
-        mDraftMessage = mEmailRepository.getDraftMessages();
+       mDraftMessage = mEmailRepository.getDraftMessages();
     }
 
     public LiveData<List<Message>> getDraftMessage(){
-        //mDraftMessage = mEmailRepository.getDraftMessages();
-        return mDraftMessage;}
+      //  mDraftMessage = mEmailRepository.getDraftMessages();
+        return mDraftMessage;
+    }
 
-    /*public LiveData<List<Message>> getInboxMessage(){
+    public void deleteNewMessage(){
+        mEmailRepository.deleteNewMessage();
+    }
+
+    public LiveData<List<Message>> getInboxMessage(){
         mInboxMessage = mEmailRepository.getInboxMessages();
         return mDraftMessage;}
 
@@ -42,7 +47,7 @@ public class EmailViewModel extends AndroidViewModel {
         mArchiveMassage = mEmailRepository.getArchiveMessages();
         return mDraftMessage;}
 
-     */
+
 
     public void insert(Message message){mEmailRepository.insert(message);}