Tusky-App-Android/app/src/main/java/com/keylesspalace/tusky/adapter/SavedTootAdapter.java

138 lines
4.1 KiB
Java
Raw Normal View History

/* 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 <http://www.gnu.org/licenses>. */
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<TootEntity> 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<TootEntity> 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<TootEntity> 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("");
}
}
}