package com.bell.scansdcardfiles.adapter;
import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Handler;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.bell.scansdcardfiles.R;
import com.bell.scansdcardfiles.activity.FileListActivity;
import com.bell.scansdcardfiles.bean.FileData;
import com.bell.scansdcardfiles.util.FileUtil;
import java.io.File;
import java.util.ArrayList;
/**
* Created by bell on 17/10/11.
*/
public class FileAdapter extends BaseAdapter {
private Context mContext;
private Handler handler;
private ArrayList<FileData> mListItems;
public FileAdapter(Context mContext, ArrayList<FileData> mListItems, Handler handler) {
this.mContext = mContext;
this.handler = handler;
this.mListItems = mListItems;
}
@Override
public int getCount() {
return mListItems.size();
}
@Override
public Object getItem(int position) {
return mListItems.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
if (null == convertView) {
holder = new ViewHolder();
convertView = LayoutInflater.from(mContext).inflate(R.layout.item_file_list, null);
holder._checkbox = (ImageView) convertView.findViewById(R.id.check_box);
holder._img = (ImageView) convertView.findViewById(R.id.item_file_image);
holder._nameText = (TextView) convertView.findViewById(R.id.item_file_name);
holder._pathText = (TextView) convertView.findViewById(R.id.item_file_path);
holder._timeText = (TextView) convertView.findViewById(R.id.item_file_time);
holder._sizeText = (TextView) convertView.findViewById(R.id.item_file_size);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
try {
final FileData data = mListItems.get(position);
if (data.isFile()) {
holder._img.setImageResource(R.drawable.ic_file);
} else {
holder._img.setImageResource(R.drawable.ic_folder);
}
holder._nameText.setText(data.getFileName());
holder._pathText.setText(data.getFilePath());
holder._timeText.setText(data.getFileTime());
holder._sizeText.setText(data.getFileSize());
// 选中模式
if (data.isSelectModel()) {
holder._checkbox.setVisibility(View.VISIBLE);
if (data.isSelect()) {
holder._checkbox.setImageResource(R.drawable.ic_checkbox_1);
} else {
holder._checkbox.setImageResource(R.drawable.ic_checkbox_0);
}
} else {
holder._checkbox.setVisibility(View.GONE);
}
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (data.isSelectModel()) {
data.setSelect(!data.isSelect());
data.setSelectModel(true);
notifyDataSetChanged();
handler.sendEmptyMessage(888);
} else {
if (data.isFile()) {
showTipsDialog(data);
} else {
Intent intent = new Intent(mContext, FileListActivity.class);
intent.putExtra("path", data.getFilePath());
mContext.startActivity(intent);
}
}
}
});
convertView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
data.setSelectModel(true);
data.setSelect(true);
handler.sendEmptyMessage(999);
return false;
}
});
} catch (Exception e) {
e.printStackTrace();
}
return convertView;
}
class ViewHolder {
ImageView _checkbox;
ImageView _img;
TextView _nameText;
TextView _pathText;
TextView _timeText;
TextView _sizeText;
}
private void showTipsDialog(final FileData fileData) {
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
final AlertDialog dialog = builder.create();
LinearLayout layout = (LinearLayout) LayoutInflater.from(mContext).inflate(R.layout.dialog_file, null);
ImageView _img = (ImageView) layout.findViewById(R.id.dl_image_view);
TextView _nameText = (TextView) layout.findViewById(R.id.dl_file_name);
TextView _sizeText = (TextView) layout.findViewById(R.id.dl_file_size);
TextView _timeText = (TextView) layout.findViewById(R.id.dl_file_time);
TextView _pathText = (TextView) layout.findViewById(R.id.dl_file_path);
if (fileData.isFile()) {
_img.setImageResource(R.drawable.ic_file);
} else {
_img.setImageResource(R.drawable.ic_folder);
}
_nameText.setText(fileData.getFileName());
_sizeText.setText("大小: " + fileData.getFileSize());
_timeText.setText("时间: " + fileData.getFileTime());
_pathText.setText("路径: " + fileData.getFilePath());
//取消
layout.findViewById(R.id.dl_cancel_btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.cancel();
}
});
//确定
layout.findViewById(R.id.dl_ok_btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.cancel();
File f = null;
if (fileData.isFile()) {
f = new File(fileData.getFilePath() + "/" + fileData.getFileName());
if (f.delete()) {
mListItems.remove(fileData);
notifyDataSetChanged();
}
} else {
f = new File(fileData.getFilePath());
if (FileUtil.deleteDir(f)) {
mListItems.remove(fileData);
notifyDataSetChanged();
}
}
}
});
dialog.setCancelable(true);
dialog.show();
Window window = dialog.getWindow();
window.setContentView(layout);
window.setGravity(Gravity.CENTER);
//背景透明
// window.getDecorView().setBackgroundColor(Color.TRANSPARENT);
window.getDecorView().setBackgroundColor(Color.WHITE);
}
}