Twidere-App-Android-Twitter.../twidere/src/main/java/org/mariotaku/twidere/view/holder/UserListViewHolder.java

135 lines
5.2 KiB
Java

/*
* Twidere - Twitter client for Android
*
* Copyright (C) 2012-2015 Mariotaku Lee <mariotaku.lee@gmail.com>
*
* 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.
*
* This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.mariotaku.twidere.view.holder;
import android.content.Context;
import android.support.v7.widget.RecyclerView.ViewHolder;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import org.mariotaku.twidere.R;
import org.mariotaku.twidere.adapter.iface.IUserListsAdapter;
import org.mariotaku.twidere.model.ParcelableUserList;
import org.mariotaku.twidere.util.MediaLoaderWrapper;
import org.mariotaku.twidere.util.UserColorNameManager;
import org.mariotaku.twidere.util.Utils;
import org.mariotaku.twidere.view.iface.IColorLabelView;
import java.util.Locale;
/**
* Created by mariotaku on 15/4/29.
*/
public class UserListViewHolder extends ViewHolder implements View.OnClickListener, View.OnLongClickListener {
private final IUserListsAdapter<?> adapter;
private final IColorLabelView itemContent;
private final ImageView profileImageView;
private final TextView nameView;
private final TextView createdByView;
private final TextView descriptionView;
private final TextView membersCountView;
private final TextView subscribersCountView;
private IUserListsAdapter.UserListClickListener userListClickListener;
public UserListViewHolder(IUserListsAdapter<?> adapter, View itemView) {
super(itemView);
itemContent = (IColorLabelView) itemView.findViewById(R.id.itemContent);
this.adapter = adapter;
profileImageView = (ImageView) itemView.findViewById(R.id.profileImage);
nameView = (TextView) itemView.findViewById(R.id.name);
createdByView = (TextView) itemView.findViewById(R.id.createdBy);
descriptionView = (TextView) itemView.findViewById(R.id.description);
membersCountView = (TextView) itemView.findViewById(R.id.membersCount);
subscribersCountView = (TextView) itemView.findViewById(R.id.subscribersCount);
}
public void displayUserList(ParcelableUserList userList) {
final Context context = itemView.getContext();
final MediaLoaderWrapper loader = adapter.getMediaLoader();
final UserColorNameManager manager = adapter.getUserColorNameManager();
itemContent.drawStart(manager.getUserColor(userList.user_key));
nameView.setText(userList.name);
final boolean nameFirst = adapter.getNameFirst();
final String createdByDisplayName = manager.getDisplayName(userList, nameFirst);
createdByView.setText(context.getString(R.string.created_by, createdByDisplayName));
if (adapter.getProfileImageEnabled()) {
profileImageView.setVisibility(View.VISIBLE);
loader.displayProfileImage(profileImageView, userList.user_profile_image_url);
} else {
profileImageView.setVisibility(View.GONE);
loader.cancelDisplayTask(profileImageView);
}
descriptionView.setVisibility(TextUtils.isEmpty(userList.description) ? View.GONE : View.VISIBLE);
descriptionView.setText(userList.description);
membersCountView.setText(Utils.getLocalizedNumber(Locale.getDefault(), userList.members_count));
subscribersCountView.setText(Utils.getLocalizedNumber(Locale.getDefault(), userList.subscribers_count));
}
public void setOnClickListeners() {
setUserListClickListener(adapter.getUserListClickListener());
}
@Override
public void onClick(View v) {
if (userListClickListener == null) return;
switch (v.getId()) {
case R.id.itemContent: {
userListClickListener.onUserListClick(this, getLayoutPosition());
break;
}
}
}
@Override
public boolean onLongClick(View v) {
if (userListClickListener == null) return false;
switch (v.getId()) {
case R.id.itemContent: {
return userListClickListener.onUserListLongClick(this, getLayoutPosition());
}
}
return false;
}
public void setUserListClickListener(IUserListsAdapter.UserListClickListener listener) {
userListClickListener = listener;
((View) itemContent).setOnClickListener(this);
((View) itemContent).setOnLongClickListener(this);
}
public void setupViewOptions() {
setTextSize(adapter.getTextSize());
}
public void setTextSize(final float textSize) {
nameView.setTextSize(textSize);
createdByView.setTextSize(textSize * 0.75f);
}
}