[JAVA] Lassen Sie uns schnell eine App erstellen, die Firestore verwendet! !!

Motivation zum Erstellen der Anwendung

Ich habe mich entschlossen, in kurzer Zeit eine Smartphone-Anwendung zu erstellen. Ich war an Firestore interessiert, also wollte ich es benutzen. Ich wollte etwas machen, das eintönig ist, aber nützlich sein könnte. Ich dachte darüber nach, eine Ausgabe zu machen und sie zu meinem eigenen Wissen zu machen.

Übersicht über die erstellte App

Sie können Kochrezepte registrieren. Jeder, dem die App gehört, kann die Rezepte der bisher registrierten Gerichte sehen.

Einführung in Firebase

Firebase-Konsole Erstellen Sie hier ein Projekt und befolgen Sie die Anweisungen zur Installation.

Im Rahmen des Projekts

  1. Platzieren Sie google_service.json direkt unter der App

  2. Fügen Sie den folgenden Code hinzu

app/build.gradle


dependencies {
    ...
    //Firebase
    implementation 'com.google.firebase:firebase-analytics:17.0.1'
    implementation 'com.google.firebase:firebase-firestore:20.1.0'
    ...
}
apply plugin: 'com.google.gms.google-services'

build.gradle


buildscript {
    repositories {
        google()
        jcenter()
        
    }
    dependencies {
        ...
        classpath 'com.google.gms:google-services:4.2.0'
    }
}

Das Setup ist jetzt abgeschlossen.

Prozess der Registrierung von Daten im Firestore

RecipeInfo.java


    private String fireStoreCollectionPath = "recipes";
    private FirebaseFirestore fireStore = FirebaseFirestore.getInstance();

    private OnSuccessListener successListener = new OnSuccessListener<DocumentReference>() {
        @Override
        public void onSuccess(DocumentReference documentReference) {
            Log.d("success", "Die Registrierung war erfolgreich");
        }
    };
    private OnFailureListener onFailureListener = new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            Log.d("fail", "Anmeldung gescheitert");
        }
    };

    /**
    *Prozess der Registrierung von Rezepten im Firestore
    * @param map Rezeptinformationen im Firestore registriert
    */
    public void recipeAdd(Map map) {
        //Generation der Firestore-Sammlung.
        fireStore.collection(fireStoreCollectionPath)
                .add(map)
                .addOnSuccessListener(successListener)
                .addOnFailureListener(onFailureListener);
    }

RecipeAddActivity.java


    private Map<String, String> recipe = new HashMap<>();
    private EditText getRecipeTitle;
    private EditText getCooking;
    private EditText getIngredients;
    private String recipeTitle;
    private String cooking;
    private String ingredients;
    public Button addButton;
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_recipe_add);

        recipeInfo = new RecipeInfo();
        getRecipeTitle = findViewById(R.id.recipe_title);
        getIngredients = findViewById(R.id.ingredients);
        getCooking = findViewById(R.id.cooking);
        addButton = findViewById(R.id.add_recipe);
        addButton.setOnClickListener(this);
    }

    /**
     *Rezeptregistrierung
     * */
    @Override
    public void onClick(View v) {
        try {
            //Speichern Sie die in EditText eingegebenen Zeichen in einer Zeichenfolge
            recipeTitle = getRecipeTitle.getText().toString();
            ingredients = getIngredients.getText().toString();
            cooking = getCooking.getText().toString();
            
            //Fügen Sie Informationen hinzu, die in der Datenbank registriert werden sollen, um sie zuzuordnen
            recipe.put("recipeTitle", recipeTitle);
            recipe.put("ingredients", ingredients);
            recipe.put("cooking", cooking);
            
            recipeInfo.recipeAdd(recipe);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

Das Obige ist der Vorgang, bei dem das beim Drücken der Taste eingegebene Rezept im Firestore registriert wird.

Prozess, um eine Liste der Rezepte zu erhalten

GetRecipeList.java


    private String fireStoreCollectionPath = "recipes";
    private FirebaseFirestore fireStore = FirebaseFirestore.getInstance();
    private RecipeCallback mRecipeCallback;
    private ArrayList<Map> recipes = new ArrayList<>();

     /**
     *Liste abrufen
     * */
    private OnCompleteListener onCompleteListener = new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if (task.isSuccessful()) {
                for (QueryDocumentSnapshot document : task.getResult()) {
                    recipes.add(document.getData());
                }
                mRecipeCallback.getRecipeMap(recipes);
            } else {
                mRecipeCallback.getRecipeMap(null);
            }
        }
    };

   /**
     *Rezept anzeigen
     * */
    void recipeList(RecipeCallback recipeCallback) {
        mRecipeCallback = recipeCallback;
        fireStore.collection(fireStoreCollectionPath)
                .get()
                .addOnCompleteListener(onCompleteListener);
    }

RecipeActivity.java


private Context mContext;
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_recipe);

        mContext = getApplicationContext();
        mRecipeCallback = new RecipeCallback() {
            @Override
            //Rückruf zur Rückgabe der Karte
            public void getRecipeMap(ArrayList<Map> recipes) {
                RecyclerView rv = (RecyclerView) findViewById(R.id.recyclerView);
                rv.setLayoutManager(new LinearLayoutManager(mContext));
                if (recipes == null) {
                    Log.d("fail", "Lesefehler");
                    return;
                }
                final List<RecipeData> list = recipeListClass.createRecipeTitleList(recipes);
                
                //Reflektieren Sie die Liste in der RecyclerView-Erstellung
                RecyclerViewAdapter adapter = new RecyclerViewAdapter(list);
                LinearLayoutManager llm = new LinearLayoutManager(mContext);
                rv.setHasFixedSize(true);
                rv.setLayoutManager(llm);
                rv.setAdapter(adapter);
                progressBar.setVisibility(ProgressBar.INVISIBLE);
                //Item Tap-Verarbeitung
                adapter.setOnItemClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        //Übergang zur Aktivität, in der Materialien und Herstellungsverfahren angezeigt werden
                    }
                });
            }
        };

        //Rezeptliste aufrufen
        getRecipeList = new GetRecipeList();
        getRecipeList.recipeList();
    }

Jetzt können Sie die Liste der Rezepte erhalten. Dieses Mal habe ich mich entschlossen, mich auf den Firestore zu konzentrieren, also in Bezug auf Recycler Views Adepter und View Holder. Wenn ich eine Chance habe, möchte ich Ihnen einen separaten Artikel über die Verwendung geben.

Der Bildschirm der erstellten App

Zusätzlicher Bildschirm add.jpg Listenbildschirm list.jpg Nach der Liste tippen Sie auf Verarbeitung cooking.jpg

Eindrücke, die ich gemacht habe

Firestore war zu bequem und einfacher als erwartet zu implementieren. Wenn überhaupt, hatte ich mit meinem mangelnden Sinn für Design zu kämpfen. Die asynchrone Verarbeitung wird auch von der diesmal verwendeten Firestore-Methode durchgeführt, sodass dies von hier aus nicht erforderlich ist.

Fazit: Firebase ist das Beste.

Recommended Posts

Lassen Sie uns schnell eine App erstellen, die Firestore verwendet! !!
Erstellen Sie einen Annotator, der Kuromoji mit NLP4J verwendet. [007]
Erstellen Sie eine App, die mithilfe der Wetter-API ermittelt, ob Sie einen Regenschirm benötigen.
Erstellen Sie eine App mit Spring Boot 2
Erstellen Sie eine App mit Spring Boot
Lassen Sie uns eine Instanz mit .new selbst erstellen. .. ..
Erstellen Sie eine App, indem Sie die Rails-Version angeben
Lass uns JUnit machen.
Erstellen Sie ein Docker-Image, um eine einfache Java-App auszuführen