Aller au contenu

ListView avec un contenu aligné


Xero

Recommended Posts

Bonjour,

après plusieurs recherches déspérées sur le sujet, je vous demande votre aide !

J'ai une ListView contenant des éléments récupérés sur le web. Le seul souçi est l'alignement de ses éléments.

Comme une image vaut mieux que mille mots :

listviewdemerde.png

Quelle solution est envisageable ?

J'ai essayé de mixer avec un TableLayout mais sans succès.

En attendant vos éventuelles propositions, je vous remercie d'avance !

Xero

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

cela ne change pas mon problème.

Voici le code

main.xml

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
   android:id="@+id/gridview"
   android:layout_width="fill_parent" 
   android:layout_height="fill_parent"
   android:columnWidth="90dp"
   android:numColumns="1"
   android:verticalSpacing="10dp"
   android:horizontalSpacing="10dp"
   android:stretchMode="columnWidth"
   android:gravity="left"
/>

affichageitems.xml

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

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

<TextView 
	android:id="@+id/position"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"/>

<TextView 
	android:id="@+id/nom" 
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"/>

<TextView 
	android:id="@+id/joues" 
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"/>

<TextView 
	android:id="@+id/victoires" 
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"/>

<TextView 
	android:id="@+id/defaites" 
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"/>

<TextView 
	android:id="@+id/egalites" 
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"/>

<TextView 
	android:id="@+id/buts" 
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"/>

<TextView 
	android:id="@+id/points" 
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"/>

</LinearLayout>

Main.java

package com.hadronanomaly.testtab;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.widget.GridView;

public class Main extends Activity {
   /** Called when the activity is first created. */

ArrayList<Equipe> equipes = new ArrayList<Equipe>();

   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

       equipes.add(new Equipe(0, "blabla", "1", "1", "1", "1", "1", "1", "1"));
       equipes.add(new Equipe(0, "blublu", "1", "10", "1", "1", "1", "1", "1"));
       equipes.add(new Equipe(0, "blabla", "1", "1", "1", "1", "1", "1", "1"));
       equipes.add(new Equipe(0, "blublu", "1", "10", "1", "1", "1", "1", "1"));
       equipes.add(new Equipe(0, "blabla", "1", "1", "1", "1", "1", "1", "1"));
       equipes.add(new Equipe(0, "blublu", "1", "10", "1", "1", "1", "1", "1"));

       GridView gridview = (GridView) findViewById(R.id.gridview);
       gridview.setAdapter(new myAdapter(this, equipes));

   }
}

MyAdapter.java

package com.hadronanomaly.testtab;

import java.util.ArrayList;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class myAdapter extends BaseAdapter {

private ArrayList<Equipe> equipes;
private LayoutInflater myInflater;

public myAdapter (Context context, ArrayList<Equipe> _equipes)
{
	this.myInflater = LayoutInflater.from(context);
	this.equipes = _equipes;
}

@Override
public int getCount() {
	return this.equipes.size();
}

@Override
public Object getItem(int arg0) {
	return this.equipes.get(arg0);
}

@Override
public long getItemId(int position) {
	return position;
}

public static class ViewHolder {

	TextView text01;
	TextView text02;
	TextView text03;
	TextView text04;
	TextView text05;
	TextView text06;
	TextView text07;
	TextView text08;

	ImageView iconeEquipe;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
	ViewHolder holder;

	if (convertView == null)
	{
		convertView = myInflater.inflate(R.layout.affichageitem, null);
		holder = new ViewHolder();

		holder.text01 = (TextView) convertView.findViewById(R.id.position);
		holder.text02 = (TextView) convertView.findViewById(R.id.nom);
		holder.text03 = (TextView) convertView.findViewById(R.id.joues);
		holder.text04 = (TextView) convertView.findViewById(R.id.victoires);
		holder.text05 = (TextView) convertView.findViewById(R.id.defaites);
		holder.text06 = (TextView) convertView.findViewById(R.id.egalites);
		holder.text07 = (TextView) convertView.findViewById(R.id.buts);
		holder.text08 = (TextView) convertView.findViewById(R.id.points);

		convertView.setTag(holder);
	} else {
		holder = (ViewHolder) convertView.getTag();
	}


	holder.text01.setText(""+equipes.get(position).position);
	holder.text02.setText(equipes.get(position).nom);
	holder.text03.setText(equipes.get(position).joues);
	holder.text04.setText(equipes.get(position).victoires);
	holder.text05.setText(equipes.get(position).defaites);
	holder.text06.setText(equipes.get(position).egalites);
	holder.text07.setText(equipes.get(position).buts);
	holder.text08.setText(equipes.get(position).points);

	return convertView;

}


}

Ce qui donne :

Affichage

1290432837_andro.png

Si vous avez une idée, je suis preneur ^^

Bonne journée

Xero

Lien vers le commentaire
Partager sur d’autres sites

Et si dans ton fichier "affichageitems.xml" tu donnais des longueurs fixes aux TextView

par ex :

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

       <TextView 
               android:id="@+id/position"
               android:layout_width="5dip"
               android:layout_height="wrap_content"/>

       <TextView 
               android:id="@+id/nom" 
               android:layout_width="50dip"
               android:layout_height="wrap_content"/>

etc...


Il doit y avoir une largeur max d'écran en "dip" commune à toutes résolutions d'écrans, le tout c'est que le total des tailles tes colonnes ne dépasse pas cette largeur maxi.

Lien vers le commentaire
Partager sur d’autres sites

XD je me sens con en voyant la simplicité de la solution ! Merci CoD!

Avant de modifier le sujet en résolu, je voudrais savoir pourquoi tu trouves que c'est une mauvaise idée Pierre87 ?

Merci de vos réponses :)

Lien vers le commentaire
Partager sur d’autres sites

oui, mais non! :P

les écrans ne font pas tous la même taille/dimension/résolution! même en dip!

ok, une grande partie des téléphones ont une largeur de 320 dip en mode portrait (la hauteur varie souvent par contre)

mais c'est CRADE de faire un code qui suppose que l'écran fait toujours 320 dip de large!

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...