“ArrayAdapter requiere que la identificación del recurso sea un TextView” xml problems

Me aparece un error al intentar configurar mi vista para mostrar ListView para el archivo que quiero mostrar (archivo de texto). Estoy bastante seguro de que tiene algo que ver con el xml. Solo quiero mostrar la información de this.file = fileop.ReadFileAsList("Installed_packages.txt"); . Mi código:

 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(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 :

       

El ArrayAdapter requiere que el ID del recurso sea una excepción XML de TextView significa que usted no proporciona lo que el ArrayAdapter espera. Cuando usas este constructor:

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

R.Layout.a_layout_file debe ser el id. De un archivo de diseño xml que contenga solo un TextView (el TextView no puede ser envuelto por otro diseño, como LinearLayout , RelativeLayout , etc.), algo como esto:

   

Si desea que el diseño de su fila de lista sea algo un poco diferente, entonces un simple widget de TextView usa este constructor:

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

donde proporciona el id de un diseño que puede contener varias vistas, pero también debe contener una vista de TextView con id (el tercer parámetro) que pasa a su ArrayAdapter para que pueda saber dónde colocar las Strings en el diseño de la fila.

Soution está aquí

listitem.xml

      

Código Java:

  String[] 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 recibe ese mensaje cuando extiende un ArrayAdapter, está obteniendo ese error porque no ha proporcionado el id de recurso correcto para mostrar el elemento. Llame a la superclase en el constructor y pase la identificación de recursos de TextView:

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

Adaptador:

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