Comment définir l'adaptateur dans le cas de plusieurs textviews par listview?
J'ai plusieurs TextView
s par élément de la liste dans mon ListView
. J'ai appris à écrire un getView
méthode que je crois mais je ne suis pas sûr ho dois-je utiliser setAdapter
appeler cette méthode.
private static String[] project = {"proj1","proj2"};
private static String[] workRequests = {"requirement gathering", "design"};
private static String[] startDate = {"02/21/2012","07/15/2011"};
private static String[] status = {"WIP","DONE"};
ListView mListView;
public class MyDashboardActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mydashboard);
final LayoutInflater mInflater = LayoutInflater.from(this);
mListView = (ListView)findViewById(R.id.dashboardList);
mListView.setAdapter(
//How do I set the adapter?
);
}
public View getView(int position, View convertView, ViewGroup parent) {
System.out.println("enters");
if(convertView == null){
convertView = LayoutInflater.from(this).inflate(R.layout.mydashboard,null);
}
((TextView) convertView.findViewById(R.id.project)).setText(project[position]);
((TextView) convertView.findViewById(R.id.work_request)).setText(workRequests[position]);
((TextView) convertView.findViewById(R.id.start_date)).setText(startDate[position]);
((TextView) convertView.findViewById(R.id.status)).setText(status[position]);
return convertView;
}
C'est la mise en page xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/home_root"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<!-- Include Action Bar -->
<include layout="@layout/actionbar_layout" />
<ListView
android:id="@+id/dashboardList"
style="@style/LeftHeaderText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:background="@drawable/innerdashboard_bg"
android:textColor="@color/textColor" >
<TextView android:id="@+id/project" />
<TextView android:id="@+id/work_request" />
<TextView android:id="@+id/start_date" />
<TextView android:id="@+id/status" />
</ListView>
</LinearLayout>
J'ai essayé de plusieurs façons, aucun n'a fonctionné. Quelqu'un pourrait s'il vous plaît suggérer comment mettre la carte dans ce cas? Merci!
voir cet exemple complet android-exemple de code.blogspot.en/p/...
un peu de code manquant... où est la classe de l'extension de baseAdapter???
Est votre
Je suis nouveau sur android, les gars, je ne suis pas sûr de ce que j'essayais de faire. @gtumca-MAC fonctionne comme un charme! Je vous remercie.
un peu de code manquant... où est la classe de l'extension de baseAdapter???
Est votre
getView()
partie de votre Adapter
classe?Je suis nouveau sur android, les gars, je ne suis pas sûr de ce que j'essayais de faire. @gtumca-MAC fonctionne comme un charme! Je vous remercie.
OriginalL'auteur Harsh | 2012-06-19
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour mettre en œuvre votre propre Adaptateur. Mon chemin est aussi important de définir un objet qui "représente" un point de vue.
Ci-dessous, il y a un exemple très simple avec deux
TextViews
pour s'adapter à vos besoins.L'objet qui représente une vue (une ligne dans la liste) :
Suivant la coutume adaptateur :
Maintenant, vous pouvez définir et de mettre votre carte dans votre activité :
Maintenant, vous n'avez à gérer votre CustomObject est dans la liste des objets.
N'oubliez pas d'invoquer
customAdapter.notifyDataSetChanged()
quand vous voulez répercuté modifications sur la liste.vous êtes les bienvenus, j'ai corrigé quelques erreurs dans mes noms de variables.
Donc, dois-je créer des adaptateurs personnalisés pour chaque nouveau
ListView
- je créer? (Qui a plusieursTextView
s bien sûr)Si vous voulez des points de vue différents dans votre ListView et si de base les adaptateurs ne sont pas suffisantes, oui, il le faut. Notez que vous pouvez facilement faire beaucoup plus complexe vues que juste un TextView.
Ou vous pourriez faire votre adaptateur personnalisé étendre ArrayAdapter
OriginalL'auteur FabiF
Votre getView (), le code doit aller dans une classe qui étend la classe BaseAdapter ou un de ses sous-classes.
Une façon de faire cela est de créer une classe privée au sein de votre MyDashboardActivity. Voici un petit exemple ci-dessous (code supplémentaire sera nécessaire). Vous voudrez aussi un objet personnalisé à associer toutes les choses que vous voulez afficher dans un élément de liste. Au lieu de plusieurs tableaux, vous avez un tableau d'un type personnalisé qui a des propriétés pour chaque valeur que vous êtes suivi.
Une chose: votre quatre TextViews doivent aller dans leur propre fichier de mise en page (voir list_item.xml ici). Cet élément de mise en page fichier est accroché par le constructeur de la coutume adaptateur (j'ai ajouté un commentaire dans le code ci-dessous pour mettre en évidence ce).
Vous êtes un sauveteur mec. Je vous aime
Merci pour ça, je vais l'utiliser. Mais une petite suggestion: IntelliJ IDEA donne un avertissement pour "inflate(R. layout.le tableau de bord,null)", et cette réponse stackoverflow.com/a/24832569/253938 propose de modifier l'état de "inflate(R. layout.le tableau de bord,parent,false)". Je l'ai fait et IntelliJ cessé de me harceler et il fonctionne toujours.
OriginalL'auteur Ben Jakuben
Il ya quelques façons de le faire. Je vais vous montrer ma façon de ce qui contient deux dispositions, la première étant tout simplement la liste de ses soi et de l'autre est la manière dont le texte doit apparaître par élément de la liste.
listset.xml
listitems.xml (Vous pouvez aussi mettre des images ici, l'idée est ici de contrôle)
Ci-dessus, je n'ai pas l'œuvre d'art, mais encore j'ai l'intention d'ajouter une ImageView pour les icônes (et vous pouvez ajouter plus de TextViews trop). Voici ma classe personnalisée.
ListAdapter.java
Dans votre activité principale jeu de fichiers
Et les ajouter en dessous en même parenthèses, comme setContentView()
Modifier
Je suis un peu en retard pour la partie qu'il ressemble, mais peut-être que cela aidera quelqu'un.
OriginalL'auteur GalacticGhost