138 lines
4.1 KiB
Java
138 lines
4.1 KiB
Java
|
/* 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("");
|
||
|
}
|
||
|
}
|
||
|
}
|