2017-03-16 1 views
-1

Ich möchte Werte in Textansicht auf Knopfdruck an bestimmten Position erhöhen oder verringern. Ich habe benutzerdefinierte listview.Problem ist, dass, wenn ich auf + Taste der ersten Item, Menge erhöht um 1 und Preis erhöht sich um 20, aber wenn ich auf den zweiten Punkt klicke, steigt die Menge direkt von 0 auf 2 und der Gewinn steigt direkt auf 40. Ich will Buch um 20 erhöhen, Stift muss um 30 und Bleistift erhöht werden von 5 und gleich für decrement.As ist: ich bin in android plz help me.Thanks für Ihre Hilfe in advance.Following ist mein Code: -zu erhöhen und zu verringern Wert in Textansicht auf Schaltfläche klicken Sie auf bestimmte Position

order.xml 
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" android:layout_height="match_parent"> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/item_name" 
     android:orientation="horizontal" 
     android:layout_toRightOf="@+id/sr_no" 

     > 
     <TextView 
      android:layout_width="150dp" 
      android:layout_height="50dp" 
      android:layout_toRightOf="@+id/srno" 
      android:layout_below="@+id/breakfast" 
      android:text="ITEM NAME" 
      android:id="@+id/itemname" 
      android:gravity="center" 
      android:textStyle="bold" 
      android:textColor="#000" 
      /> 

    </LinearLayout> 
    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/qtity" 
     android:orientation="horizontal" 
     android:layout_toRightOf="@+id/item_name" 

     > 
     <TextView 
      android:layout_width="40dp" 
      android:layout_height="50dp" 
      android:layout_toRightOf="@+id/itemname" 
      android:layout_below="@+id/lunch" 
      android:text="QTY" 
      android:id="@+id/quantity" 
      android:gravity="center" 
      android:textStyle="bold" 
      android:textColor="#000" 
      /> 

    </LinearLayout> 
    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:id="@+id/count" 
     android:layout_toRightOf="@+id/qtity" 

     > 
     <TextView 
      android:layout_width="50dp" 
      android:layout_height="50dp" /> 

    </LinearLayout> 
    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/rate" 
     android:orientation="horizontal" 
     android:layout_toRightOf="@+id/count" 

     > 
     <TextView 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:layout_toRightOf="@+id/quantity" 
      android:layout_below="@+id/snacks" 
      android:text="PRICE" 
      android:id="@+id/price" 
      android:gravity="center" 
      android:textStyle="bold" 
      android:textColor="#000" 
      /> 

    </LinearLayout> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/sr_no" 
     android:orientation="horizontal" 

     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true"> 
     <TextView 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:layout_below="@+id/breakfast" 
      android:layout_margin="2dp" 
      android:layout_marginTop="10dp" 
      android:text="SR.NO" 
      android:gravity="center" 
      android:textStyle="bold" 
      android:textColor="#000" 
      android:id="@+id/srno" 
      /> 

    </LinearLayout> 

    <ListView 
     android:layout_width="match_parent" 
     android:layout_height="350dp" 
     android:id="@+id/listdetails" 
     android:scrollbars="vertical" 
     android:scrollbarStyle="insideOverlay" 
     android:layout_below="@+id/item_name" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true"> 


    </ListView> 


</RelativeLayout> 


customlist.xml 
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" android:layout_height="match_parent"> 

    <TextView 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:id="@+id/s_no" 
     android:layout_marginTop="5dp" 
     android:gravity="center" 
     android:textColor="#000" 
     android:textStyle="bold" 
     /> 
    <TextView 
     android:layout_width="150dp" 
     android:layout_height="50dp" 
     android:gravity="center" 
     android:textColor="#000" 
     android:textStyle="bold" 
     android:id="@+id/i_name" 
     android:layout_marginTop="5dp" 
     android:layout_toRightOf="@+id/s_no" 
     /> 
    <TextView 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:id="@+id/qty" 
     android:layout_toRightOf="@id/i_name" 
     android:gravity="center" 
     android:textColor="#000" 
     android:textStyle="bold" 
     android:layout_marginTop="5dp" 
     /> 
    <Button 
     android:layout_width="25dp" 
     android:layout_height="25dp" 
     android:id="@+id/pl" 
     android:layout_marginTop="5dp" 
     android:layout_toRightOf="@+id/qty" 
     android:background="@drawable/plus1" 
     /> 
    <Button 
     android:layout_width="25dp" 
     android:layout_height="25dp" 
     android:id="@+id/min" 
     android:layout_marginTop="3dp" 
     android:layout_below="@id/pl" 
     android:layout_toRightOf="@id/qty" 
     android:background="@drawable/minus1" 
     /> 

    <TextView 
     android:layout_width="60dp" 
     android:layout_height="50dp" 
     android:id="@+id/pr" 
     android:gravity="center" 
     android:textColor="#000" 
     android:textStyle="bold" 
     android:layout_marginLeft="10dp" 
     android:layout_alignBottom="@+id/min" 
     android:layout_toRightOf="@+id/pl" 
     android:layout_toEndOf="@+id/pl" /> 
</RelativeLayout> 


Order.java 
public class Order extends Activity { 

    ListView list_item; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.order); 

     list_item=(ListView)findViewById(R.id.listdetails); 

     int sr[]={1,2,3}; 
     // int sr=1; 
     // String[] item_name={"book","pen","notebook","pendrive","rubber","scale","pencil","slate","crayons","compass box"}; 
     String [] itemname={"book","pen","pencil"}; 
     int [] quantity={0,0,0}; 
     //int[] price={20,20,25,25,30,30,20,10,25,10}; 
     int [] price={20,30,5}; 



      Custom_Adapter ca=new Custom_Adapter(this,sr,itemname,price,quantity); 
      list_item.setAdapter(ca); 
    } 
} 


CustomAdapter.java 
public class Custom_Adapter extends BaseAdapter { 
    Activity a; 
    int sr []; 
int quantity[]; 

    String itemname[]; 
    int price[]; 

    TextView qt; 
    public static int count=0,count2=0,cal; 


    private String data,pricedata; 



    public Custom_Adapter(Activity a, int[] sr, String[] itemname, int[] price, int quantity[]) { 
     this.a = a; 
     this.sr = sr; 
     this.itemname = itemname; 
     this.price = price; 
     this.quantity = quantity; 

    } 

    @Override 
    public int getCount() { 
     return itemname.length; 
    } 

    @Override 
    public Object getItem(int position) { 
     return position; 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 
    public class viewHolder{ 

     TextView srh,item,qt,rate; 
     Button plus,minus; 
    } 

    @NonNull 
    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     final viewHolder viewHolder=new viewHolder(); 
     LayoutInflater li=a.getLayoutInflater(); 
     View view=li.inflate(R.layout.customlist,parent,false); 
     viewHolder.srh=(TextView)view.findViewById(R.id.s_no); 
     viewHolder.item=(TextView)view.findViewById(R.id.i_name); 
     viewHolder.qt=(TextView)view.findViewById(R.id.qty); 
     viewHolder.plus=(Button)view.findViewById(R.id.pl); 
     viewHolder.minus=(Button)view.findViewById(R.id.min); 
     viewHolder.rate=(TextView)view.findViewById(R.id.pr); 




     viewHolder.srh.setText(Integer.toString(sr[position])); 
     viewHolder.item.setText(itemname[position]); 
     viewHolder.qt.setText(Integer.toString(quantity[position])); 

     viewHolder.rate.setText(Integer.toString(price[position])); 





     viewHolder.plus.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

        count+=1; 
       count2+=20; 
       viewHolder.qt.setText(String.valueOf(count)); 
       viewHolder.rate.setText(String.valueOf(count2)); 



      } 
     }); 
     viewHolder.minus.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 


       if (count>0 && count2>0) { 
        count = count - 1; 
        count2-=20; 
        viewHolder.qt.setText(String.valueOf(count)); 
        viewHolder.rate.setText(String.valueOf(count2)); 
       } 

      } 
     }); 

     return view; 
    } 
} 
+0

Ich bin mir nicht sicher, ob ich Sie richtig verstanden habe, je mehr Code Sie teilen, desto klarer wird Ihre Frage sein. Welche Daten sollen angezeigt werden? Ihre Liste sollte einzelne ViewType oder verschiedene Arten enthalten? Wie aktualisierst du Daten? – Lukas

+0

über Code, den ich gebucht habe, ist voll .. ich möchte die Menge und Menge bei bestimmten Artikel erhöhen oder verringern –

Antwort

0

Was habe ich verstanden, Code-Logik ist nicht correct.first Holen Sie sich den Artikel, den Sie ausgewählt haben, und behalten Sie Ihre Menge bei. [] array Wenn Sie Buch aus Liste ausgewählt haben, aktualisieren Sie Ihre Zählung auf [1,0,0] und wenn Sie Buch auswählen, erhalten Sie den Wert der Buchmenge es um 1 und update Menge [2,0,0].

+0

Können Sie mir sagen, richtige Logik? Wie Sie für Buch sagte, ist richtig, aber zur gleichen Zeit Bleistiftmenge und seine Menge sollte erhöht und verringert werden –

+0

Ok sicher und warten auf irgendwann werde ich umschreiben Sie Ihr Problem in besserer Weise geben Sie mir einige Zeit :) –

+0

Hallo, ich habe dein Problem behoben Ich habe ein paar Änderungen an benutzerdefinierten Adapter können Sie Code von unten Link herunterladen Danke genießen :) https://bitbucket.org/nikhoney27/penpencils –

0

Was Ihre Frage betrifft das Problem in Ihrem Java Code nicht ein xml, also, wenn Sie Ihre Java-Code veröffentlichen können wir helfen Ihnen

Das Problem sein könnte Sie Ihr Modell Objekt in Ihrem Listview-Datensatz wurden Wiederverwendung könnte

+0

Ich habe meine benutzerdefinierte adapter.java in Code –

+0

geben Sie eine Modellklasse und legen Sie den Zählwert innerhalb dieser Modellklasse, Verwenden Sie diese Klasse, um die Anzahl festzulegen oder abzurufen, sodass für jedes Element ein separater Eintrag vorhanden ist Klassenmodell { String sr; String Elementname; int [] Preis, int Menge []) { –

0

Es gibt einen Fehler in Ihrem Java-Code in Ihrer ListView Sie haben Button in jeder Zeile und Textview auch wenn Sie Ihre Integer in Adapter deklarieren müssen, wenn es außerhalb von ListView dann Sie in Ihrer Hauptklasse deklarieren können. Ich denke, Sie haben die gleiche Variable für jedes Listview Element nur eine ganze Zahl in Ihrem Adapter zu initialisieren, es wird das Problem lösen. Sie können Ihren Java-Code für weitere Hilfe zeigen. Hoffe, du bekommst es, was ich sagen will, und es kann dir helfen.Best of Luck Kumpel!

+0

können Sie Lösung geben –

+0

müssen Sie Code Buddy zeigen. Danach kann ich dir helfen –

+0

welchen Code willst du ?? Ich habe vollen Code gegeben. –

0
public class Model { 
     int sr; 
     String itemName; 
     float price; 
     float singlePiecePrice; 
     int quantity; 

     public Model(int sr, String itemName, float singlePiecePrice, int quantity) { 
      this.sr = sr; 
      this.itemName = itemName; 
      this.singlePiecePrice = singlePiecePrice; 
      this.quantity = quantity; 
     } 
    } 


    public class Order extends Activity { 

     ListView list_item; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.order); 

      list_item = (ListView) findViewById(R.id.listdetails); 

      ArrayList<Model> dataSet = new ArrayList<>(); 
      dataSet.add(new Model(1, "book", 0, 20)); 
      dataSet.add(new Model(2, "pen", 0, 30)); 
      dataSet.add(new Model(3, "pencil", 0, 5)); 

      Custom_Adapter ca = new Custom_Adapter(this, dataSet); 
      list_item.setAdapter(ca); 
     } 
    } 


    public class Custom_Adapter extends BaseAdapter { 


     private ArrayList<Model> dataSet; 
     private LayoutInflater layoutInflater; 

     public Custom_Adapter(Context context, ArrayList<Model> dataSet) { 
      layoutInflater = LayoutInflater.from(context); 
      this.dataSet = dataSet; 
     } 

     @Override 
     public int getCount() { 
      return dataSet.size(); 
     } 

     @Override 
     public Object getItem(int position) { 
      return position; 
     } 

     @Override 
     public long getItemId(int position) { 
      return position; 
     } 

     @Override 
     public View getView(final int position, View convertView, ViewGroup parent) { 

      final ViewHolder holder; 
      if (convertView == null) { 
       convertView = layoutInflater.inflate(R.layout.customlist, parent, false); 

       holder = new ViewHolder(); 

       holder.plus.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 

         Model model = dataSet.get(position); 
         model.quantity++; 
         model.price += model.singlePiecePrice; 
         dataSet.set(position, model); 
         holder.qt.setText(String.valueOf(model.quantity)); 
         holder.rate.setText(String.valueOf(model.price)); 


        } 
       }); 
       holder.minus.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         Model model = dataSet.get(position); 
         if (model.quantity > 0 && model.price > 0) { 
          model.quantity--; 
          model.price -= model.singlePiecePrice; 
          dataSet.set(position, model); 
          holder.qt.setText(String.valueOf(model.quantity)); 
          holder.rate.setText(String.valueOf(model.price)); 
         } 

        } 
       }); 


      } 

      return convertView; 
     } 

     public class ViewHolder { 

      TextView srh, item, qt, rate; 
      Button plus, minus; 
     } 

    } 
Verwandte Themen