2017-09-27 1 views
0

J'ai créé un exercice Android qui consiste en une entrée de texte, un bouton d'ajout et une liste dynamique. Les utilisateurs sont supposés pouvoir taper une chaîne dans l'entrée de texte, cliquer sur le bouton Ajouter et l'ajouter à la liste. Cependant, lorsque je lance ce script sur l'émulateur, rien ne se passe lorsque je clique sur le bouton Ajouter. La vérification du logcat n'aide pas, car aucun journal n'apparaît en cliquant sur le bouton. J'ai également essayé d'ajouter un point d'arrêt, mais, encore une fois, il ne se passe rien lorsque j'essaie de passer la barre. Quelqu'un peut-il m'aider s'il vous plaît? Je l'apprécierais grandement. Merci.Le bouton Ajouter une application de la liste dynamique ne fonctionne pas

package p.listviewexerice2; 

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ListView; 
import android.widget.Toast; 

import java.util.ArrayList; 

public class MainActivity extends AppCompatActivity implements View.OnClickListener{ 

    Button bt; 
    EditText et; 
    ListView lv; 
    ArrayAdapter<String> adapter; 
    ArrayList<String> list; 

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

     bt = (Button) findViewById(R.id.button); 
     et = (EditText) findViewById(R.id.editText); 
     lv = (ListView) findViewById(R.id.listView); 
     list = new ArrayList<>(); 
     list.add("x"); 
     adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list); 
     lv.setAdapter(adapter); 
     lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { 
       Toast.makeText(getBaseContext(),list.get(position),Toast.LENGTH_SHORT).show(); 
      } 
     }); 
    } 

    @Override 
    public void onClick(View v){ 
     if(v==bt){ 
      String name = et.getText().toString(); 
      if(name.isEmpty()){ 
       Toast.makeText(getBaseContext(),"Empty entry",Toast.LENGTH_SHORT).show(); 
      } 
      else{ 
       list.add(name); 
       adapter.notifyDataSetChanged(); 
      } 
     } 
    } 
} 

Répondre

0

Pouvez-vous supprimer lv.setOnItem.. bloc de code et essayez à nouveau? Parce que vous avez implémente déjà de onClickListener, de sorte que votre bouton appeler la méthode onClick()

+0

Onlick et setonitemclicklistener sont en fait différents. Le premier vérifie s'il y a une chaîne dans l'entrée, s'il y en a, alors il l'ajoute à la liste. Ce dernier répète simplement le contenu de l'élément lorsque vous cliquez dessus. – pxc3110

0

Au lieu de cela:

list.add(name); 

Faites ceci:

adapter.add(name); 

Explication: vous créez l'adaptateur avec la liste des paramètres , d'accord. Mais depuis lors, l'adaptateur gère sa propre liste interne. L'adaptateur a également des méthodes intégrées "add()" et "remove()", pour gérer cette liste interne.

+0

ne fonctionne pas :( – pxc3110

0

Votre code est presque parfait, seulement 1 chose est manquante. Vous n'avez pas enregistré l'événement click pour votre bouton bt. Et sans enregistrer l'événement click, le système ne pourra pas exécuter le code pour onClick (View v). donc juste ajouter le code ci-dessous dans votre onCreate()

bt.setOnClickListener(this);