Faire un TextView à l'intérieur d'une ListView utiliser la valeur par défaut ListView de style de ligne
Mon application génère 2 listes différentes, on utilise la valeur par défaut ListView
style que le ListView
lignes contiennent pas de TextView
à l'intérieur d'eux. L'autre liste utilise un custom CursorAdapter
et a un TextView
à l'intérieur de chaque ligne. Tout ce que je veux faire est de faire en sorte que les marges et la taille du texte sont exactement les mêmes pour les deux listes.
Ma première liste est à l'aide d'un ListView
sans TextView
à l'intérieur de chaque ligne, voici à quoi il ressemble:
Voici le code à générer:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.records);
DatabaseHandler db = new DatabaseHandler(this);
ArrayList<String> records = db.getRecords(this);
this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, records));
}
Voici le fichier xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
Mon deuxième liste est à l'aide d'un ListView
avec un TextView
à l'intérieur de chaque ligne, qui est produite par une coutume " CursorAdapter, voici à quoi il ressemble:
Voici le code à générer:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.achievements);
DatabaseHandler db = new DatabaseHandler(this);
Cursor cursor = db.getAchievements(this);
AchievementAdapter cursorAdapter = new AchievementAdapter(this, cursor);
this.setListAdapter(cursorAdapter);
}
private class AchievementAdapter extends CursorAdapter {
public AchievementAdapter(Context context, Cursor c) {
super(context, c);
}
@Override
public void bindView(View v, Context context, Cursor cursor) {
TextView tv = (TextView) v.findViewById(R.id.achView1);
if(cursor.getString(cursor.getColumnIndex("completed")).equals("yes")) {
tv.setText(cursor.getString(cursor.getColumnIndex("name"))+" (completed)");
tv.setTextColor(Color.GREEN);
}
else {
tv.setText(cursor.getString(cursor.getColumnIndex("name")));
}
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(R.layout.achievements_item, parent, false);
return v;
}
}
Voici les réalisations de fichier xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/android:empty"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text=""/>
</LinearLayout>
Ici est la achievements_item xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/achView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="" />
</LinearLayout>
Fondamentalement, je veux juste ces 2 listes de regarder exactement la même chose. Est-il un moyen de faire en sorte que les TextView
hérite par défaut ListView
de style de ligne? Ou vais-je avoir pour jouer avec les marges et tout moi-même?
OriginalL'auteur scarhand | 2012-05-31
Vous devez vous connecter pour publier un commentaire.
Il suffit de copier les attributs de la
TextView
de la valeur par défautListView
dispositionandroid.R.layout.simple_list_item_1
et les utiliser sur votre propre ligne de mise en page:Aussi, si tout ce que vous voulez pour la mesure
ListView
ligne de mise en page est unTextView
, vous pouvez supprimer le parentLinearLayout
de sorte que vous n'avez pas un extraView
dans la mise en pageVous pouvez regrouper les attributs ci-dessus dans un style, mais vous ne pouvez pas utiliser
android.R.layout.simple_list_item_
que parent que ce fichier est un fichier de mise en page et non pas d'un style.oups , vous avez raison. je n'avais pas remarqué . désolé .
OriginalL'auteur Luksprog
Dans achievements_item.xml ajouter un peu de rembourrage pour le haut et le bas de la TextView
OriginalL'auteur zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz