2012-03-28 25 views
-1

Ich habe eine Listenansicht, jeder Artikel besteht aus drei Elementen: Bildansicht und 3 Textansicht, letztere enthält den Namen eines Produkts, Produktpreis und Menge, ich möchte, wenn ich auf den Artikel klicken die entsprechende Menge erhöht sich um eins. Hier ist der Code:Ändern ListView ausgewählten Artikel


public class BoissonActivity extends Activity { 
ListView maListViewPerso; 
BaseDeDonne db = new BaseDeDonne(this); 
private static String choix="boisson"; 


public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.boisson_layout); 
maListViewPerso = (ListView) findViewById(R.id.listviewperso); 
Log.d("Lire: ", "Lire tous les produits.."); 
ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>(); 
HashMap<String, Object> map; 
listItem.clear(); 

List<Produit> produit = db.getSelectProduit(choix); 

for (Produit cn : produit) { 
map = new HashMap<String, Object>(); 
map.put("titre",String.valueOf(cn.getNom())); 
map.put("description","Prix:"+cn.getPrix_produit()); 
map.put("quantite", 0); 
String url="/sdcard/Image_Produits/"+cn.getImage_produit()+".jpg"; 
URL pictureURL = null; 
try { 
pictureURL = new URL(url); 
} catch (MalformedURLException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} 
Bitmap bitmap = BitmapFactory.decodeFile(url); 

map.put("img", bitmap); 
listItem.add(map); 
String log = "Id: "+cn.getId()+" ,Nom: " + cn.getNom()+ " ,Image: " + cn.getImage_produit() + 
" ,Prix: " + cn.getPrix_produit()+" ,Catégorie: " + cn.getCategorie(); 
Log.d("produits: ", log); 
} 
SimpleAdapter mSchedule = new SimpleAdapter (this.getBaseContext(), listItem, R.layout.affichageitem, 
new String[] {"img", "titre", "description","quantite"}, new int[] {R.id.img, R.id.titre, R.id.description,R.id.quantite}); 
mSchedule.setViewBinder(new MyViewBinder()); 
maListViewPerso.setAdapter(mSchedule); 

ich das versucht, aber nur der erste Textview wird geändert:

maListViewPerso.setOnItemClickListener(new OnItemClickListener() 
     { int compteur=0; 
     public void onItemClick(AdapterView<?> arg0, View arg1, 
       int position, long arg3) { 
       TextView t = (TextView)findViewById(R.id.quantite); 

       t.setText(String.valueOf(compteur)); 
      compteur++; 

      } 
     }); 
+1

Was ist die Frage? – prolink007

+0

Ich möchte, wenn ich auf das Element es correspanding Menge (Textansicht) erhöht um eine – marouen

+2

Ich verstehe, was Sie wollen, aber was ist die Frage? Wenn Sie wollen, dass wir nur den Code für Sie schreiben, wird das nicht passieren. Wenn Sie etwas versucht haben und es nicht funktioniert, poste dein Problem und/oder Fehler. Dann können wir Ihnen helfen, Ihr Ziel zu erreichen. Aber die meisten von uns werden nicht nur das, was Sie wollen, in Code umwandeln. – prolink007

Antwort

0

ein onListItemClick Hinzufügen ..

@Override 
public void onListItemClick(ListView l, View v, int position, long id) { 

// Your code here to increment the qty 

} 

EDIT

Verwenden Sie den übergebenen View-Parameter, um auf die richtige Ansicht zuzugreifen (ich nehme Werte aus dem oben hinzugefügten Code, sodass er nicht genau mit dem übereinstimmt, was ich oben gezeigt habe).

TextView t = (TextView) arg1.findViewById(R.id.quantite); 
t.setText(String.valueOf(compteur)); 
+0

habe ich versucht, dies aber nur die erste Textview wird geändert: maListViewPerso.setOnItemClickListener (neu OnItemClickListener() { \t int compteur = 0; public void onItemClick (AdapterView arg0, Ansicht arg1, int Position, lange arg3) { Textview t = (Textview) findViewById (R.id.quantite); t.setText (String.valueOf (compteur)); \t compteur ++; \t \t } }); – marouen

+0

wenn ich verwende: TextView t = (TextView) findViewById (R.id.quantit); t.setText (String.valueOf (compteur)); nur das erste Element wird geändert, auch wenn ich auf das zweite Element klicke – marouen

+0

Sie müssen die richtige Ansicht auswählen. Verwenden Sie den Parameter 'View v', der an die onItemClick-Methode übergeben wird. Probieren Sie es aus: 'TextView t = (TextView) v.findViewById (R.id.quantit);' – Barak