0

J'ai un listview que je veux utiliser avec un élément de liste personnalisé.comment répondre à adapter.notifyDataSetChanged()

l'élément de liste (list_item.xml):

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 

xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" 
android:layout_width="match_parent" 
android:layout_height="wrap_content"> 


<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:hint="start time" 
    android:id="@+id/startTime" 
    android:layout_margin="10dp"/> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:hint="finish time" 
    android:id="@+id/finishTime" 
    android:layout_margin="10dp"/> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/payment" 
    android:layout_margin="10dp"/> 
</LinearLayout> 

et la classe java:

private ListView listView; 
private ArrayAdapter adapter; 
private ArrayList shifts; 

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

    listView = (ListView)findViewById(R.id.listview); 
    listView.setOnItemClickListener(this); 

    adapter = new ArrayAdapter(this, R.layout.list_item, shifts); 

Ma question est, lorsque l'application commence à fonctionner, comment puis-je ajouter un nouvel élément de liste en shift (ArrayList), remplacez la méthode notifyDataSetChanged() sur l'adaptateur afin que la listview "rafraîchisse", puis définissez les textes d'édition dans l'élément de la liste avec les paramètres que je souhaite?

J'espère que je suis assez clair .. Merci beaucoup!

+1

Vous n Pas besoin de surcharger notifyDataSetChanged(), l'adaptateur fera tout, il vous suffit de mettre à jour les données de votre adaptateur et d'appeler notifyDataSetChanged. – FWeigl

+0

ok, alors comment puis-je faire un nouvel élément basé sur l'élément xml? –

+0

Pour personnaliser la mise en page, vous devez utiliser un adaptateur personnalisé. Le ArrayAdapter est là en tant qu'utilitaire pour créer rapidement des éléments de liste texte standard. Vous pouvez créer votre propre classe en étendant BaseAdapter et partir de là. – RobCo

Répondre

0
void onItemClick (AdapterView<?> parent, 
       View view, 
       int position, 
       long id) 

Paramètres
Vue: La vue dans le AdapterView qui a été cliqué (ce sera une vue fournie par l'adaptateur)

Vous pouvez donc trouver ExidText (findViewById) de Voir