Android Grid View с разделами Заголовки - PullRequest
1 голос
/ 25 апреля 2019

Я планирую использовать два разных вида списков в одном сеточном представлении.В основном, например, скажем, список автомобилей и список велосипедов.

Я хочу отобразить оба из них в одном сеточном представлении.

Я также хочу отображать заголовки перед автомобилямисписок и даже до списка велосипедов.Я хочу что-то, как показано ниже.

enter image description here

Мне известно о многих таких сообщениях, существующих в Интернете, а также о StackOverflow, ноникто из них не отвечает на мой вопрос.Некоторые из них указывают на библиотеку с липкими заголовками, а некоторые предлагают преобразовать элементы в заголовки, что опять-таки потребует сложного управления позициями, чего я не смог бы.

Любое предложение или помощь могутбудь благодарен.

Ответы [ 2 ]

2 голосов
/ 25 апреля 2019

Вам необходимо создать собственный класс адаптера, который имеет пользовательский интерфейс слушателя, и вы можете определить, нажата ли кнопка через этого слушателя.

public class YourAdapter extends BaseAdapter {

    private YourCustomListener listener;

    private List<Object> yourObjects;

    private Context mContext;

    public YourAdapter(final Context context, final YourCustomListener listener, final List<Object> yourObjects) {
        this.listener = listener;
        this.yourObjects = yourObjects;
        mContext = context;
    }

    @Override
    public int getCount() {
        return yourObjects.size();
    }

    @Override
    public Object getItem(final int position) {
        return yourObjects.get(position);
    }

    @Override
    public long getItemId(final int position) {
        return position;
    }

    @Override
    public View getView(final int position, final View convertView, final ViewGroup parent) {
        Button button;
        View view;
        if (convertView == null) {
            LayoutInflater inflater = LayoutInflater.from(mContext);
            view = inflater.inflate(R.layout.yourLayout, parent, false);
        } else {
            view = convertView;
        }
        final Object obj = getItem(position);

        button = view.findViewById(R.id.yourbuttonid);

        if (listener != null) {
            button.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(final View v) {
                    listener.onButtonOnItemClicked(obj);
                }
            });
        }

        return view;

    }

    public void setListener(YourCustomListener listener) {
        this.listener = listener;
    }

    public interface YourCustomListener {

        void onButtonOnItemClicked(Object obj);

    }

}
2 голосов
/ 25 апреля 2019

Этюд Это также Это еще один Первая - это библиотека, а вторая - проект в github

Я думаю Это еще один похож на ваш

...