200 votes

"ArrayAdapter nécessite l'ID de ressource pour être un TextView" xml problèmes

J'obtiens une erreur lorsque vous tentez de définir mon point de vue pour afficher le ListView le fichier que je veux afficher(fichier texte). Je suis assez sûr qu'il a quelque chose à voir avec le xml. Je veux juste afficher les informations provenant this.file = fileop.ReadFileAsList("Installed_packages.txt");. Mon code:

public class Main extends Activity {
    private TextView tv;
    private FileOperations fileop;
    private String[] file;

    /** Called when the activity is first created. */       
    @Override
    public void onCreate(Bundle savedInstanceState) {           
        super.onCreate(savedInstanceState); 
        this.fileop = new FileOperations(); 
        this.file = fileop.ReadFileAsList("Installed_packages.txt"); 
        setContentView(R.layout.main);
        tv = (TextView) findViewById(R.id.TextView01);
        ListView lv = new ListView(this);
        lv.setTextFilterEnabled(true); 
        lv.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, this.file)); 
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

              public void onItemClick(AdapterView<?> parent, View view,     int position, long id) { 
                    // When clicked, show a toast with the TextView text 
                    Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show(); 
              } 
        });         
        setContentView(lv);
    }

}

list_item.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" 
    android:padding="10dp"   
    android:textSize="16sp"   
    android:textColor="#000">

</LinearLayout>

main.xml :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:weightSum="1">
<ScrollView
    android:id="@+id/SCROLLER_ID"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:scrollbars="vertical"
    android:fillViewport="true">
        <TextView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:padding="5sp"
        android:id="@+id/TextView01"
        android:text="@string/hello"/>
    </ScrollView>

</LinearLayout>

484voto

Luksprog Points 52767

Le ArrayAdapter nécessite l'ID de ressource pour être un TextView XML exception signifie que vous ne fournissez pas ce que l' ArrayAdapter attend. Lorsque vous utilisez ce constructeur:

new ArrayAdapter<String>(this, R.layout.a_layout_file, this.file)

R.Layout.a_layout_file doit être l'id d'un xml fichier de mise en page ne contenant qu'un TextView( TextView ne peut pas être enveloppé par une autre structure, comme un LinearLayout, RelativeLayout etc!), quelque chose comme ceci:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    // other attributes of the TextView
/>

Si vous voulez que votre liste de lignes de mise en page pour être quelque chose d'un peu différent d'une simple TextView widget utilisation de ce constructeur:

new ArrayAdapter<String>(this, R.layout.a_layout_file, 
   R.id.the_id_of_a_textview_from_the_layout, this.file)

où vous fournissez l' id d'une mise en page qui peut contenir divers points de vue, mais aussi doit contenir un TextView avec et id(troisième paramètre) que vous transmettez à votre ArrayAdapter de sorte qu'il peut savoir où mettre la Strings dans la ligne de mise en page.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X