Итак, я хочу распечатать список фильмов из базы данных до ListView
, и я использую ArrayAdapter
, но когда я запускаю приложение, оно дает мне это.My ListView показывает объект, а не содержимое каждого объекта
Я думаю, что проблема в ArrayAdapter
или ListView
:
Код:
Моя модель класса;
public class Movie
{
private int id;
private String name;
private String genre;
private int year;
public long getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getGenre()
{
return genre;
}
public void setGenre(String genre)
{
this.genre = genre;
}
public int getYear()
{
return year;
}
public void setYear(int year)
{
this.year = year;
}
}
В моей DBHandle у меня есть;
private Movie cursorToMovie (Cursor cursor)
{
Movie movie = new Movie();
movie.setId(cursor.getInt(0));
movie.setName(cursor.getString(1));
movie.setGenre(cursor.getString(2));
movie.setYear(cursor.getInt(3));
return movie;
}
public List<Movie> getAllMovies()
{
open();
List<Movie> movieList = new ArrayList<>();
Cursor cursor = db.query(Movie.TABLE_NAME, MovieAllColumns, null, null, null, null, null);
cursor.moveToFirst();
while (!cursor.isAfterLast())
{
Movie movie = cursorToMovie(cursor);
movieList.add(movie);
cursor.moveToNext();
}
cursor.close();
close();
return movieList;
}
И в моем MainActivity у меня есть (это здесь, я думаю, в методе GetAllMovies
)
public class MainActivity extends AppCompatActivity
{
MoviesRepository moviesRepository;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GetAllMovies();
}
public void GetAllMovies()
{
moviesRepository = new MoviesRepository(this);
moviesRepository.open();
List<Movie> movieList = moviesRepository.getAllMovies(); // Gets all Movies from the database
ArrayAdapter<Movie> adapter = new ArrayAdapter<Movie>(this, android.R.layout.simple_list_item_1, movieList);
ListView listView = (ListView) findViewById(R.id.ListViewMovie);
listView.setAdapter(adapter);
}
}
Примечание стороны, когда я его отладки, я могу видеть, что movieList
заселяется по возвращаемое значение moviesRepository.getAllMovies()
, и я могу видеть все названия фильмов, жанр и год.
я доволен По умолчанию, 'ArrayAdapter' бы показать содержимое массива, которые происходят с объектами в вашем случае. Вы хотите расширить «ArrayAdapter», чтобы получить строки из объектов, а затем установить их в представлениях –
, вам нужно настроить адаптер. Для лучшего понимания прочитайте настройку представления списка с помощью BaseAdapter. – ADM
Я решил это, сделав toString в классе фильма –