2016-04-14 8 views
1

Good Tag, ich habe ein Problem mit der Aufrechterhaltung der Wert für jeden EditText in einer benutzerdefinierten Listenansicht zum Beispiel Ich drehe den Bildschirm, jeder Wert ist weg, Bitte helfen Sie mir, welchen Ansatz sollte ich tun , Danke im Voraus.Wie man den Wert jedes EditText in der customlistview

enter image description here

Bild Adapter

public View getView(int position, View convertView, ViewGroup parent) { 
     View row; 
     row = convertView; 
     final dataHandler handler; 
     if(convertView == null){ 
      LayoutInflater inflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      row = inflater.inflate(R.layout.row_layout,parent, false); 
      handler = new dataHandler(); 
      handler.pictures = (ImageView) row.findViewById(R.id.pictures); 
      handler.name = (TextView) row.findViewById(R.id.picturename); 
      handler.qty= (EditText) row.findViewById(R.id.qty); 
      handler.add = (Button) row.findViewById(R.id.btnplus); 
      handler.minus = (Button) row.findViewById(R.id.btnminus); 
      row.setTag(handler); 
     }else{ 
      handler = (dataHandler) row.getTag(); 
     } 
     final PSP psp; 
     psp =(PSP) this.getItem(position); 
    Picasso.with(getContext()).load(psp.getPicture()).resize(200, 155).into(handler.pictures); 
    handler.name.setText(psp.getName() + "\n ₱" + psp.getPrice()); 
    handler.qty.setText("0"); 
    img = psp.getPicture(); 

    handler.add.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String pricex = handler.qty.getText().toString(); 
      int xx = Integer.parseInt(pricex); 
      int total = xx + 1; 
      String totalx = Integer.toString(total); 
      handler.qty.setText(totalx); 

      map.put("" + handler.name.getText().toString(), " " + handler.qty.getText().toString()); 
      ShowHashMapValue(); 
     } 
    }); 

    handler.minus.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String pricex = handler.qty.getText().toString(); 

      int xx = Integer.parseInt(pricex); 
      if(xx > 0){ 
       int total = xx-1; 
       String totalx = Integer.toString(total); 
       handler.qty.setText(totalx); 
       map.put("" + handler.name.getText().toString(), " " + handler.qty.getText().toString()); 


      }} 
    }); 



    return row; 
} 
+0

Wo Sie Ihren Adapter einstellen kann? –

+1

versuchen Sie diesen Link http://stackoverflow.com/questions/16692536/good-solution-to-retain-listview-items-when-user-rotate-phone-and-keep-all-data –

+0

danke, es wird helfen:) – zxcetera

Antwort

4

hinzufügen setQuantity und getQuantity (Getter-Setter Methode in Ihrem PSP Modell).

String pricex = psp.getQuanntity(); 
       int xx = Integer.parseInt(pricex); 
       int total = xx + 1; 
       String totalx = Integer.toString(total); 
    handler.qty.setText(totalx); 

    handler.add.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) {  
       //add 
       psp.setQuantity(yourQuantity++); 
       notifyDataSetChanged(); 
       } 
     }); 

handler.minus.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) {  
       //add 
       psp.setQuantity(yourQuantity--); 
       notifyDataSetChanged(); 
       } 
     }); 

Ich hoffe, es hilft Ihnen wirklich.

+0

schön, es funktioniert, alles was ich jetzt brauche ist lernen, wie onSaveInstanceState, vielen Dank :) – zxcetera

+1

Es ist mir ein Vergnügen. Sie sind herzlich willkommen –

+0

Wenn Sie wirklich mit meiner Antwort zufrieden sind, dann akzeptieren Sie es bitte. Vielen Dank –

0

Hope this für Sie- Verwenden Sie diese in Ihrem Aktivitäts-Tag in manifest File- arbeiten

 android:configChanges="orientation|keyboardHidden|screenSize" 

lassen Sie es mich wissen, ob dies tut nicht für dich arbeiten.

0

Nur speichern Wert mit dieser Methode

public void onSaveInstanceState(Bundle savedState) { 

     super.onSaveInstanceState(savedState); 

     // Note: getValues() is a method in your ArrayAdapter subclass 
     String[] values = mAdapter.getValues(); 
     savedState.putStringArray("myKey", values); 

    } 

Anschließend können Sie die Daten in Ihrem onCreate Methode oder onCreateView oder onActivityCreated wie folgt abrufen:

public void onCreate (Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    if (savedInstanceState != null) { 
     String[] values = savedInstanceState.getStringArray("myKey"); 
     if (values != null) { 
      mAdapter = new MyAdapter(values); 
     } 
    } 

    ... 

} 
Verwandte Themen