package org.aisen.weibo.sina.ui.fragment.picturepick;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.TextView;
import org.aisen.android.common.utils.SystemUtils;
import org.aisen.android.component.bitmaploader.BitmapLoader;
import org.aisen.android.component.bitmaploader.core.ImageConfig;
import org.aisen.android.component.bitmaploader.download.SdcardDownloader;
import org.aisen.android.support.inject.ViewInject;
import org.aisen.android.ui.fragment.AListFragment;
import org.aisen.android.ui.fragment.adapter.ARecycleViewItemView;
import org.aisen.android.ui.fragment.itemview.IITemView;
import org.aisen.android.ui.fragment.itemview.IItemViewCreator;
import org.aisen.weibo.sina.R;
import java.io.Serializable;
import java.util.ArrayList;
/**
* Created by wangdan on 15-1-29.
*/
public class PictureDireListFragment extends AListFragment<PictureDireListFragment.PictureFileDire, ArrayList<PictureDireListFragment.PictureFileDire>>
implements AdapterView.OnItemClickListener {
public static PictureDireListFragment newInstance(String currentDire, ArrayList<PictureFileDire> files) {
Bundle args = new Bundle();
args.putSerializable("files", files);
args.putSerializable("current", currentDire);
PictureDireListFragment fragment = new PictureDireListFragment();
fragment.setArguments(args);
return fragment;
}
private ArrayList<PictureFileDire> files;
private String currentDire;
private OnPictureDireSelectedCallback callback;
@Override
public int inflateContentView() {
return R.layout.ui_picture_pick_dire;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
files = savedInstanceState == null ? (ArrayList<PictureFileDire>) getArguments().getSerializable("files")
: (ArrayList<PictureFileDire>) savedInstanceState.getSerializable("files");
currentDire = savedInstanceState == null ? getArguments().getString("current")
: savedInstanceState.getString("current");
}
@Override
protected void setupRefreshConfig(RefreshConfig config) {
super.setupRefreshConfig(config);
config.footerMoreEnable = false;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (callback != null) {
PictureFileDire dire = getAdapterItems().get(position);
callback.onPictureDireSelected(dire);
currentDire = dire.getName();
getAdapter().notifyDataSetChanged();
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putSerializable("files", files);
outState.putSerializable("current", currentDire);
}
@Override
public IItemViewCreator<PictureFileDire> configItemViewCreator() {
return new IItemViewCreator<PictureFileDire>() {
@Override
public View newContentView(LayoutInflater inflater, ViewGroup parent, int viewType) {
return inflater.inflate(R.layout.item_picture_pick_dire, parent, false);
}
@Override
public IITemView<PictureFileDire> newItemView(View convertView, int viewType) {
return new PictureDireItemView(convertView);
}
};
}
@Override
public void requestData(RefreshMode mode) {
setItems(files);
}
class PictureDireItemView extends ARecycleViewItemView<PictureFileDire> {
@ViewInject(id = R.id.img)
ImageView img;
@ViewInject(id = R.id.txtName)
TextView txtName;
@ViewInject(id = R.id.txtDesc)
TextView txtDesc;
@ViewInject(id = R.id.imgSelected)
View imgSelected;
public PictureDireItemView(View itemView) {
super(getActivity(), itemView);
}
@Override
public void onBindData(View convertView, PictureFileDire data, int position) {
ImageConfig config = new ImageConfig();
config.setLoadfaildRes(R.drawable.bg_timeline_loading);
config.setLoadingRes(R.drawable.bg_timeline_loading);
config.setMaxWidth(SystemUtils.getScreenWidth(getActivity()) / 3);
config.setMaxHeight(SystemUtils.getScreenWidth(getActivity()) / 3);
config.setCacheEnable(false);
config.setDownloaderClass(SdcardDownloader.class);
config.setId("thumb_dir");
BitmapLoader.getInstance().display(PictureDireListFragment.this, data.getFiles().get(0), img, config);
txtName.setText(data.getName());
txtDesc.setText(data.getFiles().size() == 0 ? "" : String.format("%d张", data.getFiles().size()));
imgSelected.setVisibility(currentDire.equals(data.getName()) ? View.VISIBLE : View.GONE);
}
}
public static class PictureFileDire implements Serializable {
private static final long serialVersionUID = 1746378490588970508L;
private String name;
private ArrayList<String> files;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ArrayList<String> getFiles() {
return files;
}
public void setFiles(ArrayList<String> files) {
this.files = files;
}
}
public void setCallback(OnPictureDireSelectedCallback callback) {
this.callback = callback;
}
public interface OnPictureDireSelectedCallback {
public void onPictureDireSelected(PictureFileDire dire);
}
}