Android Listview avec spinner et une case à cocher
Je suis un newbie de développement android. Je suis en train de créer une Liste qui a un spinner, modifier le texte et une case à cocher. Les données pour spinner et la case à cocher proviennent de la base de données. J'ai les fichiers suivants.
NewTransac class which extends ListActivity {
private PayDbAdapter mDbHelper;
private Spinner paySpinner;
private CheckBox mCheckBox;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.new_transac_listview);
mDbHelper = new PayDbAdapter(this);
mDbHelper.open();
populatedata();
}
private void populatedata() {
paySpinner = (Spinner)findViewById(R.id.payerspinner);
mCheckBox = (CheckBox)findViewById(R.id.paidforcheckboxname);
Cursor mCursor = mDbHelper.fetchAllTransactionValue();
startManagingCursor(mCursor);
//Create an array to specify the fields we want to display in the list.
String[] from = new String[]{PayDbAdapter.KEY_NAME};
int[] to = new int[]{android.R.id.text1};
int[] cbto = new int[]{R.id.paidforcheckboxname};
//Now create a simple cursor adapter and set it to display
SimpleCursorAdapter adapter =
new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, mCursor, from, to );
adapter.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );
paySpinner.setAdapter(adapter);
SimpleCursorAdapter cbAdapter =
new SimpleCursorAdapter(this, R.layout.show_new_transac_data, mCursor, from, cbto );
setListAdapter(cbAdapter);
}
L'affichage de la liste xml
<ListView android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawSelectorOnTop="false"
android:textSize="14sp"
/>
<TextView android:id="@android:id/empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/no_friends"
android:textSize="14sp"
/>
<Button android:id="@+id/confirmpay"
android:text="@string/confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|center_horizontal"
android:layout_gravity="center_vertical|center_horizontal|center">
</Button>
affichage de la liste remplis xml
<TextView
style="?android:attr/listSeparatorTextViewStyle"
android:text="@string/listSeparatorPay"
android:layout_marginTop="5dip"
android:layout_marginBottom="5dip"
/>
<Spinner android:id="@+id/payerspinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:prompt="@string/selectpayer"
/>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/paytext"
/>
<EditText android:id="@+id/payamount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="text"
/>
<TextView
style="?android:attr/listSeparatorTextViewStyle"
android:text="@string/listSeparatorPayedFor"
android:layout_marginTop="5dip"
android:layout_marginBottom="5dip"
/>
<CheckBox android:id="@+id/paidforcheckboxname"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<EditText android:id="@+id/paidforamount"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"
/>
Problem
Je reçois plusieurs toupies, des cases à cocher et edittext basé sur le nombre de champs dans la base de données. Je vois que nous ne pouvons pas l'adaptateur pour la case que j'ai mis pour le spinner.
J'ai besoin d'obtenir un seul spinner avec une seule modification de texte et plusieurs cases(nombre total de lignes de la base de données). s'il vous plaît aider!
OriginalL'auteur Anji | 2010-10-17
Vous devez vous connecter pour publier un commentaire.
MODIFIER - s'il vous plaît voir les commentaires, cette solution peut ne pas être correcte
Je sais que cette question ancienne, mais c'est le premier résultat sur Google et je suis en train de travailler sur une application qui utilise des Toupies dans une ListView. J'ai utilisé un exemple de code à partir de ici pour commencer. J'espère que cet exemple répond à votre question. Je n'avais pas de mettre en œuvre les Cases à cocher, mais ils sont très similaires à la Toupie - beaucoup plus facile, en fait. Cet exemple a un ListView avec un TextView et un compteur. Chaque fois que l'utilisateur modifie la sélection de la toupie, le TextView change pour refléter cela.
J'ai divisé le projet en 3 classes:
Il y a aussi des 3 clés Android fichiers XML j'ai modifié /créé le:
Pour démarrer à partir du bas vers le haut, ce main.xml le fichier ne contient qu'une seule Liste, et rien d'autre:
Et voici le rowview.xml. Rappelez-vous que ce point de vue est dupliqué pour chaque ligne dans la liste:
L'strings.xml fichier. Tout ce que je était un tableau le contenu de la casserole:
Maintenant pour le fun stuff. Le ListViewActivity classe:
C'est assez simple, vous avez juste la liste à une nouvelle carte, et de définir la liste de l'adaptateur à celle que vous avez faite. C'est le DataHolder classe:
Tous les DataHolder classe n'est maintenir le cône de la carte et toutes les autres informations que vous souhaitez enregistrer pour chaque entrée dans la liste (vous pouvez stocker si elle est cochée ou non, par exemple). Et, enfin, la vraie "viande" de l'application, le DataAdapter classe:
Voici une capture d'écran de l'appli finale (c'est pas très joli, mais il fonctionne):
Et c'est tout! J'espère que j'ai répondu à votre question et aidé quelqu'un d'autre qui a trébuché sur elle comme je l'ai fait. Si vous voulez changer dynamiquement les données dans la liste, utilisez le DataAdapter de
add()
,remove()
,get()
, etset()
méthodes. Pour modifier les données pour chaque spinner, vous devez modifier le DataHolder classe. Le SpinnerAdapter est créé il y a, donc, vous avez juste besoin de générer dynamiquement les cartes selon la base de données de la réponse.ListView
articles eux-mêmes, pour stocker les données qui est un gros no-no à l'aide de laListView
. Tout ce qui est désigné comme un tag avec un deListView
éléments ne pouvaient pas être utilisés pour stocker des données sensibles à la position qui doit être affichée. ToutListView
élément susceptible d'être réutilisé plus tard pour afficher un autre point à un autre poste. Cet exemple sera brisé une fois que vous avez assez d'éléments pour leListView
pour lancer le défilement, il suffit de tester avec 10 points ou plus, dépend de votre émulateur de la taille de l'écran.vous êtes de droite. ce problème est arrivé avec suffisamment d'articles et de défilement. jpalm, vous devez vérifier que la première. Les gars s'il vous Plaît poster réponse parfaite à ce problème. M'aider.
OriginalL'auteur jpalm
Pour faire des choses comme ça on est pour stocker toutes les données de la carte, pas dans
ListView
éléments. Un affichage qui représente unListView
élément susceptible d'être réutilisé pour afficher un autre élément, en faisant toutes les données stockées dans la plus pertinente jusqu'à ce que les données appropriées est nouveau dansgetView
.OriginalL'auteur devmiles.com