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; }