Remplir listview à l'aide SimpleCursorAdapter dans Android
Je sais que cette question a été demandé et répondu avant, mais j'ai suivi plusieurs tutoriels en vain.
J'ai juste pensé que si je mets mon code, peut-être quelqu'un pouvait m'aider et de me diriger dans la bonne direction. Je ne vais pas vous mentir, je suis un très grand noob à ce, mais je suis amoureux d'elle jusqu'à présent (enfin, jusqu'à ce point de toute façon). Tout ce qui se passe est que lorsque je charge l'activité, c'est juste de la force se ferme avec le message d'erreur suivant:
06-14 20:04:08.162: ERROR/AndroidRuntime(17605): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.magic8/com.example.magic8.AnswerList}: java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView
Donc, c'est ici. Ma requête de base de données est:
public Cursor fetchAnswersList() {
return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, "answer"},
null, null, null, null, null, null);
}
Puis ma liste afficher le code:
public class AnswerList extends Activity {
private Context context;
private DatabaseManager mDbHelper;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.answerlist);
Cursor answers = mDbHelper.fetchAnswersList();
startManagingCursor(answers);
ListView answerList=(ListView)findViewById(R.id.answerList);
String[] from = new String[] {"_id", "answer"};
int[] to = new int[] {R.id.answerItem};
SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(context, R.layout.list_item, answers, from, to);
answerList.setAdapter(cursorAdapter);
answerList.setOnItemClickListener(
new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
//When clicked, show a toast with the TextView text
setToast("Answer: " + ((TextView) view).getText());
}
});
}
Et le dernier mais non le moindre, voici mon 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"
android:orientation="vertical">
<LinearLayout
android:id="@+id/addAnswerForm"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:orientation="horizontal">
<EditText
android:id="@+id/addAnswer"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_width="wrap_content">
<requestFocus></requestFocus>
</EditText>
<Button
android:text="Add"
android:id="@+id/addAnswer_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Button>
</LinearLayout>
<LinearLayout
android:id="@+id/answers"
android:layout_height="match_parent"
android:layout_width="match_parent">
<ListView
android:layout_weight="1"
android:layout_height="wrap_content"
android:id="@+id/answerList"
android:layout_width="match_parent">
<TextView
android:id="@+id/answerItem"
android:layout_height="match_parent"
android:layout_width="match_parent">
</TextView>
</ListView>
</LinearLayout>
</LinearLayout>
Avez-vous essayé d'utiliser ListActivity au lieu de l'Activité?
Salut, Oui j'ai. Suis-je en droit de penser que si il y a plus d'une liste dans l'activité que j'ai besoin d'utiliser de l'Activité plutôt que ListActivity? Pour le moment il n'est qu'une liste, mais il y a une zone de texte et le bouton dans le XML que je veux être en mesure de permettre à l'utilisateur d'ajouter leurs propres réponses à la liste.
Salut, Oui j'ai. Suis-je en droit de penser que si il y a plus d'une liste dans l'activité que j'ai besoin d'utiliser de l'Activité plutôt que ListActivity? Pour le moment il n'est qu'une liste, mais il y a une zone de texte et le bouton dans le XML que je veux être en mesure de permettre à l'utilisateur d'ajouter leurs propres réponses à la liste.
OriginalL'auteur javaMonkey | 2011-06-14
Vous devez vous connecter pour publier un commentaire.
L'erreur que vous obtenez est plus probable parce que vous essayez d'incorporer un TextView dans une ListView...
Supprimer le TextView à partir de la liste, puis essayez ce qui suit...
Il utilise le pré-définis Android
android.R.layout.simple_list_item_1
etandroid.R.id.text1
ListView answerList=(ListView)findViewById(R.id.answerList); String[] from = new String[] {"answer"}; int[] to = new int[] {android.R.id.text1}; SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(context, android.R.layout.simple_list_item_1, answers, from, to); answerList.setAdapter(cursorAdapter);
Mon message d'erreur: Votre contenu doit avoir un ListView dont l'attribut id est " android.R.id.liste"Avez-vous changé d'Activité pour ListActivity? Si si, vous avez juste un peu compliqué les choses.
Bizarre, maintenant je suis en train d'essayer et obtenir cette erreur:
06-14 21:23:17.852: ERROR/AndroidRuntime(19652): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.magic8/com.example.magic8.AnswerList}: java.lang.NullPointerException
. J'ai regardé dans ce que cela signifie, mais je ne vois rien la cause.Non, je n'ai pas le changer pour ListActivity.
Essayez de changer l'identifiant 'id' pour votre ListView dans le fichier xml pour
android:id="@android:id/list"
- vous allez également avoir à le changer pourfindViewById(android.R.id.list)
OriginalL'auteur Squonk
Votre vers et à partir de doivent être de la même longueur. Vous n'avez pas besoin d'inclure _id dans le 'de' tableau. Notez que vous devez toujours avoir _id de votre curseur.
OriginalL'auteur anakin78z