NekoX/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsAdapter.java

124 lines
3.5 KiB
Java
Raw Normal View History

2014-10-31 20:02:29 +01:00
/*
2015-10-29 18:10:07 +01:00
* This is the source code of Telegram for Android v. 3.x.x.
2014-10-31 20:02:29 +01:00
* 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.
2014-10-31 20:02:29 +01:00
*/
package org.telegram.ui.Adapters;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
2015-09-24 22:52:02 +02:00
import org.telegram.messenger.AndroidUtilities;
import org.telegram.messenger.MessagesController;
import org.telegram.messenger.support.widget.RecyclerView;
import org.telegram.tgnet.TLRPC;
2014-10-31 20:02:29 +01:00
import org.telegram.ui.Cells.DialogCell;
2014-11-19 02:23:46 +01:00
import org.telegram.ui.Cells.LoadingCell;
2014-10-31 20:02:29 +01:00
2015-06-29 19:12:11 +02:00
import java.util.ArrayList;
2015-05-21 23:27:27 +02:00
public class DialogsAdapter extends RecyclerView.Adapter {
2014-10-31 20:02:29 +01:00
private Context mContext;
2015-06-29 19:12:11 +02:00
private int dialogsType;
2014-10-31 20:02:29 +01:00
private long openedDialogId;
private int currentCount;
2014-10-31 20:02:29 +01:00
2015-05-21 23:27:27 +02:00
private class Holder extends RecyclerView.ViewHolder {
public Holder(View itemView) {
super(itemView);
}
}
2015-06-29 19:12:11 +02:00
public DialogsAdapter(Context context, int type) {
2014-10-31 20:02:29 +01:00
mContext = context;
2015-06-29 19:12:11 +02:00
dialogsType = type;
2014-10-31 20:02:29 +01:00
}
public void setOpenedDialogId(long id) {
openedDialogId = id;
}
public boolean isDataSetChanged() {
int current = currentCount;
2015-11-26 22:04:02 +01:00
return current != getItemCount() || current == 1;
2014-10-31 20:02:29 +01:00
}
2015-09-24 22:52:02 +02:00
private ArrayList<TLRPC.Dialog> getDialogsArray() {
2015-06-29 19:12:11 +02:00
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;
}
2014-10-31 20:02:29 +01:00
@Override
2015-05-21 23:27:27 +02:00
public int getItemCount() {
2015-06-29 19:12:11 +02:00
int count = getDialogsArray().size();
2014-10-31 20:02:29 +01:00
if (count == 0 && MessagesController.getInstance().loadingDialogs) {
return 0;
}
if (!MessagesController.getInstance().dialogsEndReached) {
count++;
}
currentCount = count;
2014-10-31 20:02:29 +01:00
return count;
}
2015-09-24 22:52:02 +02:00
public TLRPC.Dialog getItem(int i) {
ArrayList<TLRPC.Dialog> arrayList = getDialogsArray();
2015-06-29 19:12:11 +02:00
if (i < 0 || i >= arrayList.size()) {
return null;
2014-10-31 20:02:29 +01:00
}
2015-06-29 19:12:11 +02:00
return arrayList.get(i);
2014-10-31 20:02:29 +01:00
}
@Override
public long getItemId(int i) {
return i;
}
@Override
2015-05-21 23:27:27 +02:00
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);
}
2016-03-16 13:26:32 +01:00
view.setLayoutParams(new RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.WRAP_CONTENT));
2015-05-21 23:27:27 +02:00
return new Holder(view);
2014-10-31 20:02:29 +01:00
}
@Override
2015-05-21 23:27:27 +02:00
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) {
if (viewHolder.getItemViewType() == 0) {
DialogCell cell = (DialogCell) viewHolder.itemView;
cell.useSeparator = (i != getItemCount() - 1);
2015-09-24 22:52:02 +02:00
TLRPC.Dialog dialog = getItem(i);
2015-06-29 19:12:11 +02:00
if (dialogsType == 0) {
2015-05-21 23:27:27 +02:00
if (AndroidUtilities.isTablet()) {
cell.setDialogSelected(dialog.id == openedDialogId);
2014-10-31 20:02:29 +01:00
}
}
2015-06-29 19:12:11 +02:00
cell.setDialog(dialog, i, dialogsType);
2014-10-31 20:02:29 +01:00
}
}
@Override
public int getItemViewType(int i) {
2015-06-29 19:12:11 +02:00
if (i == getDialogsArray().size()) {
2014-10-31 20:02:29 +01:00
return 1;
}
return 0;
}
}