L'ajout dynamique de de ligne personnalisée à la liste

En se référant cela, j'ai créé suivantes:

main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/addBtn"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:onClick="addItems"
        android:text="Add New Item" />

    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:drawSelectorOnTop="false" />

</LinearLayout>

MainActivity.java

public class MainActivity extends Activity {
    ListView list;   
    ArrayList<String> listItems = new ArrayList<String>();    
    ArrayAdapter<String> adapter;   
    int clickCounter = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        list = (ListView) findViewById(R.id.list);
        adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, listItems);
        list.setAdapter(adapter);

        list.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                String item = list.getItemAtPosition(position).toString();
                Log.i("MainActivity", "Selected = " + item);
            }
        });
    }

    public void addItems(View v) {
        listItems.add("Clicked : " + clickCounter++);
        adapter.notifyDataSetChanged();
    }
}

Et il fonctionne parfaitement. Mais selon les exigences, chaque mon listview ligne ne sera pas seulement une chaîne unique. Au lieu de cela, il sera collection de vues composé de imageview et textviews stockées dans row.xml.

Maintenant mes questions sont:

  • Ce qui va remplacer adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, listItems); ? Il sera adapter = new ArrayAdapter<String>(this,R.layout.row, listItems); ??

  • Comment puis-je consulter imageview et textviews de chaque ligne? Comment puis-je définir et récupérer des données à partir d'eux? Comment puis-je reconnaître leurs événements de clic?

  • Est l'utilisation de Adapter doit? ou puis-je sortir avec elle?

Toute aide appréciée.

créez votre propre coutume Adaptateur et remplacer le getView() méthode pour gonfler votre ligne de votre choix de mise en page

OriginalL'auteur GAMA | 2013-06-06