/* Copyright 2017 Andrew Dawson * * This file is a part of Tusky. * * This program is free software; you can redistribute it and/or modify it under the terms of the * GNU General Public License as published by the Free Software Foundation; either version 3 of the * License, or (at your option) any later version. * * Tusky is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General * Public License for more details. * * You should have received a copy of the GNU General Public License along with Tusky; if not, * see . */ package com.keylesspalace.tusky.adapter; import android.support.annotation.Nullable; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageButton; import android.widget.TextView; import com.keylesspalace.tusky.R; import com.keylesspalace.tusky.db.TootEntity; import java.util.ArrayList; import java.util.List; public class SavedTootAdapter extends RecyclerView.Adapter { private List list; public SavedTootAdapter() { super(); list = new ArrayList<>(); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_saved_toot, parent, false); return new TootViewHolder(view); } @Override public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) { TootViewHolder holder = (TootViewHolder) viewHolder; holder.bind(getItem(position)); } @Override public int getItemCount() { return list.size() + 1; } public void update(List newToot) { if (newToot == null || newToot.isEmpty()) { return; } if (list.isEmpty()) { list = newToot; } else { int index = list.indexOf(newToot.get(newToot.size() - 1)); for (int i = 0; i < index; i++) { list.remove(0); } int newIndex = newToot.indexOf(list.get(0)); if (newIndex == -1) { list.addAll(0, newToot); } else { list.addAll(0, newToot.subList(0, newIndex)); } } notifyDataSetChanged(); } public void addItems(List newToot) { int end = list.size(); list.addAll(newToot); notifyItemRangeInserted(end, newToot.size()); } @Nullable public TootEntity removeItem(int position) { if (position < 0 || position >= list.size()) { return null; } TootEntity toot = list.remove(position); notifyItemRemoved(position); return toot; } public void addItem(TootEntity toot, int position) { if (position < 0 || position > list.size()) { return; } list.add(position, toot); notifyItemInserted(position); } public TootEntity getItem(int position) { if (position >= 0 && position < list.size()) { return list.get(position); } return null; } public static class ViewHolder extends RecyclerView.ViewHolder { TextView mTextView; public ViewHolder(TextView v) { super(v); mTextView = v; } } private static class TootViewHolder extends RecyclerView.ViewHolder { public TextView content; public ImageButton suppr; TootViewHolder(View view) { super(view); content = (TextView) view.findViewById(R.id.content); suppr = (ImageButton) view.findViewById(R.id.suppr); } public void bind(TootEntity item) { if (item != null && !TextUtils.isEmpty(item.getText())) content.setText(item.getText()); else content.setText(""); } } }