Jump to content

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

Link to comment
Share on other 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

Link to comment
Share on other 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.

Link to comment
Share on other sites

parce que les écrans ont tous des résolutions différentes?

C'est bien pour ça que j'utilise le "dip" comme unité au lieu du pixel, ça donne une "quasi" indépendance au niveau de la résolution des écrans.

Link to comment
Share on other 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!

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...