pda/zhuike/.svn/pristine/a8/a87715c55136185539d9b65f858...

205 lines
5.8 KiB
Plaintext

package com.novelbook.android.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.novelbook.android.R;
import com.novelbook.android.utils.Fileutil;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import butterknife.BindView;
import butterknife.ButterKnife;
public class FileAdapter extends BaseAdapter {
private List<File> files;
private HashMap<File,Boolean> checkMap = new HashMap<>();
private Context context;
private CheckedChangeListener mCheckedChangeListener;
public FileAdapter(Context context) {
this.context = context;
}
public FileAdapter(Context context, List<File> files) {
this.context = context;
this.files = files;
initCheckMap();
}
private void initCheckMap(){
if (files != null) {
for (File file : files) {
checkMap.put(file, false);
}
}
}
@Override
public int getCount() {
if (files == null) {
return 0;
}
return files.size();
}
@Override
public Object getItem(int position) {
return files.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
//全选
public void checkAll(){
Iterator iter = checkMap.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
checkMap.put((File) entry.getKey(),true);
}
notifyDataSetChanged();
}
//取消
public void cancel(){
Iterator iter = checkMap.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
checkMap.put((File) entry.getKey(),false);
}
notifyDataSetChanged();
}
//选择的数目
public int getCheckNum(){
int num = 0;
Iterator iter = checkMap.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
if ((Boolean) entry.getValue()){
num++;
}
}
return num;
}
public List<File> getCheckFiles(){
List<File> files = new ArrayList<>();
Iterator iter = checkMap.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
if ((Boolean) entry.getValue()){
files.add((File) entry.getKey());
}
}
return files;
}
public HashMap<File,Boolean> getCheckMap(){
return checkMap;
}
public List<File> getFiles() {
return files;
}
public void setFiles(List<File> files) {
this.files = files;
initCheckMap();
notifyDataSetChanged();
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder viewHolder;
final File file = files.get(position);
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(
R.layout.zadapter_file_item, null);
viewHolder = new ViewHolder(convertView);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
//CheckBox状态变化监听
viewHolder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
checkMap.put(file,isChecked);
if (mCheckedChangeListener != null){
mCheckedChangeListener.onCheckedChanged(position,buttonView,isChecked);
}
}
});
initFileData(file,viewHolder);
initCheckBox(file,viewHolder);
return convertView;
}
private void initCheckBox(File file,ViewHolder viewHolder){
if (checkMap.get(file) != null) {
viewHolder.checkBox.setChecked(checkMap.get(file));
}
}
private void initFileData(File file,ViewHolder viewHolder){
//设置文件名
viewHolder.textView.setText(file.getName());
//文件夹和文件逻辑判断
if (file.isDirectory()) {
viewHolder.fileIcon.setImageResource(R.mipmap.folder);
viewHolder.checkBox.setVisibility(View.INVISIBLE);
viewHolder.textSize.setText("项");
} else {
viewHolder.fileIcon.setImageResource(R.mipmap.file_type_txt);
viewHolder.checkBox.setVisibility(View.VISIBLE);
viewHolder.textSize.setText(Fileutil.formatFileSize(file.length()));
}
}
static class ViewHolder {
@BindView(R.id.tv_file_text)
TextView textView;
@BindView(R.id.tv_file_text_size)
TextView textSize;
@BindView(R.id.iv_file_icon)
ImageView fileIcon;
@BindView(R.id.cb_file_image)
CheckBox checkBox;
@BindView(R.id.ll_file_lin)
LinearLayout linearLayout;
public ViewHolder(View view) {
ButterKnife.bind(this, view);
}
}
public void setCheckedChangeListener(CheckedChangeListener checkedChangeListener){
mCheckedChangeListener = checkedChangeListener;
}
public interface CheckedChangeListener{
void onCheckedChanged(int position, CompoundButton buttonView, boolean isChecked);
}
}