Копировать фон в последней строке GridView - PullRequest
0 голосов
/ 24 октября 2011

У меня есть 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 Ответ

1 голос
/ 24 октября 2011

Я думаю, вам нужно add empty item at the last of private List<LibraryItem> books in multiple of 4, а затем передать его адаптеру массива, чтобы ваш список содержал (n% 4 = 0) элемент.

Здесь используется 4, потому что у вашего gridview есть 4 столбца.

Спасибо.

...