#android #android-layout #android-gridview
#Android #android-макет #android-gridview
Вопрос:
У меня есть GridView с четырьмя столбцами, к каждому элементу я добавил свой библиотечный фон (в стиле полки), но проблема в том, что в последней строке, если их меньше четырех, фон отображается только до последнего элемента, мне это нужно, чтобы заполнить строку, как я могусделать это?
Это мой фактический код:
public class LibraryGridView extends GridView {
private LibraryActivity activity;
public LibraryGridView(LibraryActivity activity) {
super(activity);
setBackgroundColor(Color.rgb(223, 223, 223));
this.activity = activity;
setNumColumns(activity.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE ? 6 : 4);
}
public void setData(List<LibraryItem> books) {
setAdapter(new BookAdapter(getContext(), books));
}
private class BookAdapter extends ArrayAdapter<LibraryItem> {
private List<LibraryItem> books;
public BookAdapter(Context context, List<LibraryItem> books) {
super(context, 0, books);
this.books = books;
}
public View getView(int position, View convertView, ViewGroup parent) {
BookGridView view = null;
if (convertView == null)
view = new BookGridView(activity);
else
view = (BookGridView) convertView;
view.setBackgroundResource(R.drawable.background_grid);
view.loadStateFrom(getItem(position));
return view;
}
public LibraryItem getItem(int id) {
return books.get(id);
}
public int getCount() {
return books.size();
}
public long getItemId(int position) {
return position;
}
}
}
Комментарии:
1. Для цели try вы можете добавить пустой элемент в последнюю из книг private List<LibraryItem>, а затем передать его в адаптер массива? таким образом, ваш список содержит n 1 элемент. попробуйте и дайте мне знать, что произойдет?
2. Ну, я решил это так, я добавил пустые значения, а также вернул null для GetItem, и единственное, что нарисовано, это фон. Ty
3. Поэтому я думаю, что вы всегда должны добавлять элемент в список, кратный 4, потому что у вас есть 4 столбца, и он работает. Если вы не возражаете, я напишу комментарий about в качестве ответа, чтобы вы приняли его, и это полезно для вас и других пользователей. Спасибо.
Ответ №1:
Я думаю, вам нужно add empty item at the last of private List<LibraryItem> books in multiple of 4
, а затем передать его адаптеру массива, чтобы ваш список содержал (n% 4 = 0) элемент.
Здесь используется 4, потому что в вашем gridview есть 4 столбца.
Спасибо.