«ArrayAdapter nécessite que l’ID de la ressource soit un object TextView»

Je reçois une erreur en essayant de définir mon affichage pour afficher le ListView pour le fichier que je veux afficher (fichier texte). Je suis sûr que cela a quelque chose à voir avec le xml. Je veux juste afficher les informations de this.file = fileop.ReadFileAsList("Installed_packages.txt"); . Mon code:

 public class Main extends Activity { private TextView tv; private FileOperations fileop; private Ssortingng[] 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(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 :

    

main.xml :

       

ArrayAdapter requirejs que l’ID de ressource soit une exception XML TextView, ce qui signifie que vous ne fournissez pas ce que l’ ArrayAdapter attend. Lorsque vous utilisez ce constructeur:

 new ArrayAdapter(this, R.layout.a_layout_file, this.file) 

R.Layout.a_layout_file doit être l’ID d’un fichier de disposition xml contenant uniquement un object TextView (le TextView ne peut pas être TextView dans une autre disposition, comme LinearLayout , RelativeLayout etc.!):

   

Si vous voulez que la disposition de votre ligne de liste soit quelque peu différente, un simple widget TextView utilise ce constructeur:

 new ArrayAdapter(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 pouvant contenir différentes vues, mais également un object TextView avec et id (le troisième paramètre) que vous transmettez à votre ArrayAdapter pour qu’il sache où placer les Ssortingngs dans la disposition des lignes.

Soution est là

listitem.xml

      

Code Java:

  Ssortingng[] countryArray = {"India", "Pakistan", "USA", "UK"}; ArrayAdapter adapter = new ArrayAdapter(this, R.layout.listitem,R.id.textview, countryArray); ListView listView = (ListView) findViewById(R.id.listview); listView.setAdapter(adapter); 

Si vous recevez ce message lorsque vous étendez un ArrayAdapter, vous obtenez cette erreur car vous n’avez pas fourni l’ID de ressource correct pour afficher l’élément. Appelez la super classe dans le constructeur et transmettez l’ID de ressource de TextView:

  //Pass in the resource id: R.id.text_view SpinnerAdapter spinnerAddToListAdapter = new SpinnerAdapter(MyActivity.this, R.id.text_view, new ArrayList<>()); 

Adaptateur:

 public class SpinnerAdapter extends ArrayAdapter { private Context context; private List values; public SpinnerAdapter(Context context, int textViewResourceId, List values) { //Pass in the resource id: R.id.text_view super(context, textViewResourceId, values); this.context = context; this.values = values; }