Skocz do zawartości
Michał Chechelski

Działają na raz dwa przyciski - jak zwielokrotnić opcje dodaj usuń i zbudować bazę produktów?

    Rekomendowane odpowiedzi

    Hejka!

    chcę zbudować prosty program magazynowy i mam problem. 

    Chciałbym zwielokrotnić produkty i opcje dodaj / odejmij

    i nie potrafię tego zrobić. Coś już zacząłem kombinować, ale że jestem na początku przygody z java, muszę prosić o jakąś podpowiedź. Z góry dzięki za pomoc dla początkującego :)

     

    DOTYCHCZASOWY REZULTAT: DZIAŁAJĄ NA RAZ DWA PRODUKTY, JAK WCISKAM + TO ROSNĄ STANY DWÓCH PRODUKTÓW.

    ZAŁĄCZYŁEM SCREEN-SHOT

    5a1612d9c830f_Screenshot-23_11.thumb.jpg.818b86c4f870bda7ede5e159a4ae2628.jpg

    xml

    2 produkty, a każdy ma:

    2 buttony DODAJ + i - ODEJMIJ

    nazwa produktu

    i stan początkowy

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        tools:context=".MainActivity"
        android:orientation="horizontal">
    
        <!--- pierwszy produkt A01> -->
    
        <!--- DODANIE STANU -->
        <Button
           android:id="@+id/increment"
           android:layout_height="wrap_content"
           android:layout_width="wrap_content"
           android:text="+"
           android:onClick="increment"/>
    
        <!--- STAN POCZĄTKOWY -->
        <TextView
           android:id="@+id/skuA01_text_view"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="0"
           />
        
        <!--- NAZWA PRODUKTU -->
       <TextView
           android:id="@+id/SkuNumer_text_view"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="A01"
           />
    
        <!--- ODJĘCIE STANU -->
       <Button
           android:id="@+id/decrement"
           android:layout_height="wrap_content"
           android:layout_width="wrap_content"
           android:text="-"
           android:onClick="decrement"/>
        
        <!--- drugi produkt A02> -->
       <Button
           android:id="@+id/increment2"
           android:layout_height="wrap_content"
           android:layout_width="wrap_content"
           android:text="+"
           android:onClick="increment2"/>
        
       <TextView
           android:id="@+id/skuA02_text_view"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="0"
           />
    
       <TextView
           android:id="@+id/skuNumer_text_view"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="A02"
           />
    
       <Button
           android:id="@+id/decrement2"
           android:layout_height="wrap_content"
           android:layout_width="wrap_content"
           android:text="-"
           android:onClick="decrement2"/>
    </LinearLayout>

    i JAVA

    /**
     * IMPORTANT: Add your package below. Package name can be found in the project's AndroidManifest.xml file.
     * This is the package name our example uses:
     *
     * package com.example.android.justjava; 
     *
     */
    package com.example.android.justjava;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.TextView;
    
    /**
     * This app displays an order form to order coffee.
     */
    public class MainActivity extends AppCompatActivity {
    
        int skuA01 = 0;
        int skuA02 = 0;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        /**
         * This method is called when the plus button is clicked.
         */
        public void increment (View view) {
            skuA01 = skuA01 + 1;
            display(skuA01);
        }
    
        /**
         * This method is called when the minus button is clicked.
         */
        public void decrement(View view) {
            skuA01 = skuA01 - 1;
            display(skuA01);
        }
    
        public void increment2 (View view) {
            skuA02 = skuA02 + 1;
            display(skuA02);
        }
    
        public void decrement2(View view) {
            skuA02 = skuA02 - 1;
            display(skuA02);
    
        }
    
        /**
         * This method displays the given quantity value on the screen.
         */
        private void display(int number) {
            TextView skuA01TextView = (TextView) findViewById(R.id.skuA01_text_view);
            skuA01TextView.setText("" + number);
            TextView skuA02TextView = (TextView) findViewById(R.id.skuA02_text_view);
            skuA02TextView.setText("" + number);
        }
    
    
    }

     

    Edytowane przez Michał Chechelski

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Ja bym to zrobił tak:

    public class MainActivity extends AppCompatActivity {
    
        private Button mP1Plus;
        private Button mP1Minus;
        private Button mP2Plus;
        private Button mP2Minus;
    
        private TextView mP1;
        private TextView mP2;
    
    
        private int p1 = 0;
        private int p2 = 0;
    
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            mP1Plus = (Button) findViewById(R.id.b_p_p1);
            mP1Minus = (Button) findViewById(R.id.b_m_p1);
            mP2Plus = (Button) findViewById(R.id.b_p_p2);
            mP2Minus = (Button) findViewById(R.id.b_m_p2);
    
            mP1 = (TextView) findViewById(R.id.tv_p1);
            mP2 = (TextView) findViewById(R.id.tv_p2);
    
            mP1Plus.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
    
                    p1 = p1 + 1;
                    mP1.setText("Produkt1 szt: " + p1);
                }
            });
    
            mP1Minus.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
    
                    p1 = p1 - 1;
                    mP1.setText("Produkt1 szt: " + p1);
                }
            });
    
            mP2Plus.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
    
                    p2 = p2 + 1;
                    mP2.setText("Produkt2 szt: " + p2);
                }
            });
    
            mP2Minus.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
    
                    p2 = p2 - 1;
                    mP2.setText("Produkt2 szt: " + p2);
                }
            });
    
        }
    }
    <TableLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
            <TableRow
                android:layout_width="match_parent"
                android:layout_height="match_parent">
    
                <TextView
                    android:id="@+id/tv_p1"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="6"
                    android:text="Produkt1 szt: " />
    
                <Button
                    android:id="@+id/b_p_p1"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text="+" />
    
                <Button
                    android:id="@+id/b_m_p1"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text="-" />
    
            </TableRow>
    
            <TableRow
                android:layout_width="match_parent"
                android:layout_height="match_parent">
    
                <TextView
                    android:id="@+id/tv_p2"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="6"
                    android:text="Produkt2 szt: " />
    
                <Button
                    android:id="@+id/b_p_p2"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text="+" />
    
                <Button
                    android:id="@+id/b_m_p2"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text="-" />
            </TableRow>
    
        </TableLayout>
    </RelativeLayout>

    Oczywiście po wyłączeniu apki ilość produktów się wyzeruje, można by zapisywac ilość do sharedPreferences dodać przycisk zerowania albo recznego wpisywania ilości itd itp ;)

     

    PS Ciekaw jestem opinii o moim kodzie jakiś doświadczonych programistów :)

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    szykam

    Do wyświetlania listy (szczególnie dużej) lepiej użyć RecylerView. Wiersz będzie budował layout który będzie miał przycisk "-" który będzie powiadamiał RecyclerView.Adapter że element został usunięty. Dodawanie elementu zrobiłbym przez oddzielny przycisk, najlepiej FloatingActionButton, który otwierałby formatkę z edycją elementu.

     

    TL;DR

    Poczytaj jak wyświetlać listy przez RecyclerView + RecycelerView.Adapter.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Hoymm

     

    @szykam dobrze mówi, chodzi o to że jeżeli chcecie dodawać/usuwac elementy to tworzy się wzorzec w postaci osobnego View. W tym przypadku bedzie to osobny plik xml, np. w LinearLayout "button + text + button". Pozniej w nasz activity_main.xml wrzucacie wyłącznie obiekt typu RecyclerView i używając adaptera załączacie stworzony wczesniej wzorzec ile tylko chcecie razy, można go usuwac/dodawac do woli. W ten sposób nie powielacie kodu.

    Edytowane przez Hoymm

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    senega
    Dnia 23.11.2017 o 01:15, Michał Chechelski napisał:

    private void display(int number) { TextView skuA01TextView = (TextView) findViewById(R.id.skuA01_text_view); skuA01TextView.setText("" + number); TextView skuA02TextView = (TextView) findViewById(R.id.skuA02_text_view); skuA02TextView.setText("" + number); }

    Tutaj masz błąd. W obydwu TextView wyświetlasz tą samą wartość.

     

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    giaur500

    Zrób sobie listę (RecyclerView)i dodawaj wiersze do listy. Dodawać możesz przez kliknięcie FloatingActionButton, albo ostatni wiersz listy może zawierać przycisk dodawania (czyli rozumiem, że tak jak chciałeś, bezsens). Usuwanie może być przez zaznaczenie po przytrzymaniu pozycji na liście, tak jak np usuwasz wątek sms w aplikacji. W internecie jest pełno przykładów, a nawet gotowe kontrolki listy, które to ułatwiają (bo wcale trywialne to nie musi być dla początkującego).

    Edytowane przez giaur500

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x