Как вставить подзаголовок между 2 данными в программе повторного просмотра? - PullRequest
0 голосов
/ 25 марта 2019

что я делаю примерно так

https://imgur.com/mqiNBoP.jpg

Как вы можете видеть, есть 2 ресивера, расположенные рядом друг с другом, но это не главное

Главное это

https://imgur.com/DVbAlAa.jpg

Вы можете видеть, что есть 10 последовательностей, отображаемых в формате json (не вините, почему я показываю их в тексте, я ленивый)

Но в соответствующем обзоре утилизатора показаны только 9 из них, первые данные отсутствуют (данные слева)

Я думаю, что это должно быть проблемой моего getItemViewType, но я не могу понять, что не так

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    private Context context;

    private ArrayList<Train> train_datas;

    public RecyclerViewAdapter(Context context, ArrayList<Train> train_datas) {
        this.context = context;
        this.train_datas = train_datas;
    }


    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());

        if(viewType == 1) {
            View view = layoutInflater.inflate(R.layout.train_header, parent,false);
            return new ViewHolderHeader(view);
        }
        else {
            View view = layoutInflater.inflate(R.layout.train_cards, parent,false);
            return new ViewHolderContent(view);
        }
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        Train train = train_datas.get(position);

        if (holder.getItemViewType() == 1) {
            ViewHolderHeader holderHeader = (ViewHolderHeader) holder;

            holderHeader.tvStation.setText(Utils.getStationName(train.getStation()));
            return;
        }

        else {
            ViewHolderContent holderContent = (ViewHolderContent) holder;

            // Some complicate mechenics here

            return;
        }
    }

    @Override
    public int getItemCount() {
        return train_datas.size();
    }

    @Override
    public int getItemViewType(int position) {
        int type = Integer.valueOf(train_datas.get(position).getSeq());

        return type;
    }

    public class ViewHolderContent extends RecyclerView.ViewHolder {
        public TextView tvSequence;
        public TextView tvTime;
        public TextView tvDest;
        public ImageView platImg;
        public TextView tvTtnt;

        public CardView cardView;

        public ViewHolderContent(View itemView) {
            super(itemView);
            tvSequence = itemView.findViewById(R.id.tvSequence);
            tvTime = itemView.findViewById(R.id.tvTime);
            tvDest = itemView.findViewById(R.id.tvDest);
            platImg = itemView.findViewById(R.id.platImg);
            tvTtnt = itemView.findViewById(R.id.tvTtnt);

            cardView = itemView.findViewById(R.id.cardView);
            itemView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    Toast.makeText(v.getContext(), "click " + getAdapterPosition(), Toast.LENGTH_SHORT).show();
                    return false;
                }
            });
        }
    }

    public class ViewHolderHeader extends RecyclerView.ViewHolder {
        public TextView tvStation;

        public ViewHolderHeader(View itemView) {
            super(itemView);
            tvStation = itemView.findViewById(R.id.tvStation);
        }
    }
}

Итак, о чем я спрашиваю, как добавить заголовок вместе со всеми (10 из них) моими данными?

Спасибо тебе большое

Редактировать: В настоящее время я понимаю, что я пытаюсь накачать заголовок xml при "getItemViewType () == 1", и я не могу показать первые данные, потому что они заняты заголовком xml, но Я до сих пор не знаю, как ее решить

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...