package org.aisen.weibo.sina.ui.fragment.menu;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.FrameLayout;
import android.widget.TextView;
import org.aisen.android.common.context.GlobalContext;
import org.aisen.android.common.utils.ActivityHelper;
import org.aisen.android.common.utils.SystemUtils;
import org.aisen.android.common.utils.Utils;
import org.aisen.android.support.inject.ViewInject;
import org.aisen.android.ui.fragment.AListFragment;
import org.aisen.android.ui.fragment.adapter.ABasicItemView;
import org.aisen.android.ui.fragment.itemview.IITemView;
import org.aisen.android.ui.fragment.itemview.IItemViewCreator;
import org.aisen.weibo.sina.R;
import org.aisen.weibo.sina.base.AppContext;
import org.aisen.weibo.sina.sinasdk.bean.Group;
import org.aisen.weibo.sina.sinasdk.bean.Groups;
import java.util.ArrayList;
/**
* 维护FabSheet的界面
*
* Created by wangdan on 16/1/2.
*/
public class FabGroupsFragment extends AListFragment<Group, Groups> {
private int selectedPosition = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
selectedPosition = savedInstanceState == null ? ActivityHelper.getIntShareData(GlobalContext.getInstance(), getPositionKey(), 0)
: savedInstanceState.getInt(getPositionKey(), 0);
}
public void resetSelectedPosition() {
selectedPosition = ActivityHelper.getIntShareData(GlobalContext.getInstance(), getPositionKey(), 0);
}
@Override
public int inflateContentView() {
return R.layout.ui_fab_groups;
}
@Override
protected void setupRefreshConfig(RefreshConfig config) {
super.setupRefreshConfig(config);
config.footerMoreEnable = false;
}
@Override
public IItemViewCreator<Group> configItemViewCreator() {
return new IItemViewCreator<Group>() {
@Override
public View newContentView(LayoutInflater inflater, ViewGroup parent, int viewType) {
return inflater.inflate(R.layout.item_main_group, parent, false);
}
@Override
public IITemView<Group> newItemView(View convertView, int viewType) {
return new FabGroupsItemView(convertView);
}
};
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
super.onItemClick(parent, view, position, id);
selectedPosition = position;
getAdapter().notifyDataSetChanged();
ActivityHelper.putIntShareData(GlobalContext.getInstance(), getPositionKey(), position);
if (getActivity() instanceof OnFabGroupSelectedCallback) {
((OnFabGroupSelectedCallback) getActivity()).onGroupSelected(position, getAdapterItems().get(position));
}
}
@Override
public void requestData(RefreshMode mode) {
}
@Override
public void setItems(ArrayList<Group> items) {
super.setItems(items);
// 设置列表的尺寸
int width = Utils.dip2px(getActivity(), 175);
if (width > SystemUtils.getScreenWidth(getActivity()) / 2) {
width = SystemUtils.getScreenWidth(getActivity()) / 2;
}
if (items.size() > 7) {
getContentView().setLayoutParams(new FrameLayout.LayoutParams(width, Utils.dip2px(getActivity(), 340)));
}
else {
getContentView().setLayoutParams(new FrameLayout.LayoutParams(width, FrameLayout.LayoutParams.WRAP_CONTENT));
}
}
public void show() {
int top = 0;
if (getRefreshView().getChildCount() > 0 && getRefreshView().getChildAt(0).getHeight() > 0) {
top = getRefreshView().getChildAt(0).getHeight() * 3;
}
else {
top = Utils.dip2px(getActivity(), 175);
}
getRefreshView().setSelectionFromTop(selectedPosition, top);
}
public void triggerLastPosition() {
if (selectedPosition >= getAdapterItems().size()) {
selectedPosition = 0;
}
onItemClick(getRefreshView(), null, selectedPosition, 0);
}
class FabGroupsItemView extends ABasicItemView<Group> {
@ViewInject(id = R.id.txtTitle)
TextView txtTitle;
public FabGroupsItemView(View convertView) {
super(getActivity(), convertView);
}
@Override
public void onBindData(View convertView, Group data, int position) {
txtTitle.setText(data.getName());
if (selectedPosition == position) {
getConvertView().setBackgroundResource(R.drawable.abc_list_pressed_holo_light);
}
else {
getConvertView().setBackgroundColor(getResources().getColor(R.color.comm_transparent));
}
}
}
private String getPositionKey() {
return "FabGroupsPosition-" + AppContext.getAccount().getUid();
}
public interface OnFabGroupSelectedCallback {
void onGroupSelected(int position, Group group);
}
}