mirror of https://github.com/NekoX-Dev/NekoX.git
124 lines
3.5 KiB
Java
124 lines
3.5 KiB
Java
/*
|
|
* This is the source code of Telegram for Android v. 3.x.x.
|
|
* It is licensed under GNU GPL v. 2 or later.
|
|
* You should have received a copy of the license in this archive (see LICENSE).
|
|
*
|
|
* Copyright Nikolai Kudashov, 2013-2016.
|
|
*/
|
|
|
|
package org.telegram.ui.Adapters;
|
|
|
|
import android.content.Context;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
|
|
import org.telegram.messenger.AndroidUtilities;
|
|
import org.telegram.messenger.MessagesController;
|
|
import org.telegram.messenger.support.widget.RecyclerView;
|
|
import org.telegram.tgnet.TLRPC;
|
|
import org.telegram.ui.Cells.DialogCell;
|
|
import org.telegram.ui.Cells.LoadingCell;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
public class DialogsAdapter extends RecyclerView.Adapter {
|
|
|
|
private Context mContext;
|
|
private int dialogsType;
|
|
private long openedDialogId;
|
|
private int currentCount;
|
|
|
|
private class Holder extends RecyclerView.ViewHolder {
|
|
|
|
public Holder(View itemView) {
|
|
super(itemView);
|
|
}
|
|
}
|
|
|
|
public DialogsAdapter(Context context, int type) {
|
|
mContext = context;
|
|
dialogsType = type;
|
|
}
|
|
|
|
public void setOpenedDialogId(long id) {
|
|
openedDialogId = id;
|
|
}
|
|
|
|
public boolean isDataSetChanged() {
|
|
int current = currentCount;
|
|
return current != getItemCount() || current == 1;
|
|
}
|
|
|
|
private ArrayList<TLRPC.Dialog> getDialogsArray() {
|
|
if (dialogsType == 0) {
|
|
return MessagesController.getInstance().dialogs;
|
|
} else if (dialogsType == 1) {
|
|
return MessagesController.getInstance().dialogsServerOnly;
|
|
} else if (dialogsType == 2) {
|
|
return MessagesController.getInstance().dialogsGroupsOnly;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public int getItemCount() {
|
|
int count = getDialogsArray().size();
|
|
if (count == 0 && MessagesController.getInstance().loadingDialogs) {
|
|
return 0;
|
|
}
|
|
if (!MessagesController.getInstance().dialogsEndReached) {
|
|
count++;
|
|
}
|
|
currentCount = count;
|
|
return count;
|
|
}
|
|
|
|
public TLRPC.Dialog getItem(int i) {
|
|
ArrayList<TLRPC.Dialog> arrayList = getDialogsArray();
|
|
if (i < 0 || i >= arrayList.size()) {
|
|
return null;
|
|
}
|
|
return arrayList.get(i);
|
|
}
|
|
|
|
@Override
|
|
public long getItemId(int i) {
|
|
return i;
|
|
}
|
|
|
|
@Override
|
|
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
|
|
View view = null;
|
|
if (viewType == 0) {
|
|
view = new DialogCell(mContext);
|
|
} else if (viewType == 1) {
|
|
view = new LoadingCell(mContext);
|
|
}
|
|
view.setLayoutParams(new RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.WRAP_CONTENT));
|
|
return new Holder(view);
|
|
}
|
|
|
|
@Override
|
|
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) {
|
|
if (viewHolder.getItemViewType() == 0) {
|
|
DialogCell cell = (DialogCell) viewHolder.itemView;
|
|
cell.useSeparator = (i != getItemCount() - 1);
|
|
TLRPC.Dialog dialog = getItem(i);
|
|
if (dialogsType == 0) {
|
|
if (AndroidUtilities.isTablet()) {
|
|
cell.setDialogSelected(dialog.id == openedDialogId);
|
|
}
|
|
}
|
|
cell.setDialog(dialog, i, dialogsType);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public int getItemViewType(int i) {
|
|
if (i == getDialogsArray().size()) {
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
}
|