package org.carelife.creader.ui.adapter;
import java.io.IOException;
import org.carelife.creader.R;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.List;
import org.carelife.creader.bean.*;
import org.carelife.creader.db.DatabaseHelper;
import org.carelife.creader.ui.activity.BookMark;
import org.carelife.creader.util.FileUtil;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
public class BookmarkAdapter extends BaseExpandableListAdapter {
private List<List<BookMarkChildBean>> child_data;
private List<BookMarkGroupBean> group_data;
Context context;
GroupViewHolder groupholder;
ChildViewHolder childholder;
BookMark Bookmark;
private DatabaseHelper dbHelper;
public SQLiteDatabase db;
private String sql;
private SimpleDateFormat formatter = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");
private Date curDate;
private String time_str;
private int flag_sql;
FileUtil fm;
public BookmarkAdapter(Context context ,List<BookMarkGroupBean> group_data, List<List<BookMarkChildBean>> child_data ){
this.context = context;
this.child_data = child_data;
this.group_data = group_data;
fm = new FileUtil();
}
private void initdb(){
dbHelper = new DatabaseHelper(context,"Novel_db");
db = dbHelper.getWritableDatabase();
}
private void closedb(){
db.close();
}
public Object getChild(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return null;
}
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return 0;
}
public int getChildrenCount(int groupPosition) {
// TODO Auto-generated method stub
return (child_data!= null) ? child_data.get(groupPosition).size() : 0;
}
public Object getGroup(int groupPosition) {
// TODO Auto-generated method stub
return null;
}
public int getGroupCount() {
// TODO Auto-generated method stub
return (group_data!= null) ? group_data.size() : 0;
}
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return groupPosition;
}
public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if(convertView == null ){
convertView = View.inflate(context, R.layout.bookmarkgroup, null);
groupholder = new GroupViewHolder();
groupholder.book_name = (TextView)convertView.findViewById(R.id.bookmark_bookname);
groupholder.delbook = (Button)convertView.findViewById(R.id.book_mark_deletebook);
groupholder.book_pic = (ImageView) convertView.findViewById(R.id.bookmark_bookpic);
convertView.setTag(groupholder);
}else{
groupholder = (GroupViewHolder)convertView.getTag();
}
final String book_name = group_data.get(groupPosition).book_name;
groupholder.book_name.setText(book_name);
groupholder.book_pic.setImageBitmap(group_data.get(groupPosition).bm);
groupholder.delbook.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
sql = "delete from book_mark where book_name = '"+book_name+"'";
flag_sql = 1;
initdb();
try {
db.execSQL(sql);
} catch (Exception e) {
// TODO: handle exception
flag_sql = 0;
System.out.println("del book fail!");
}
if(flag_sql == 1){
group_data.remove(groupPosition);
BookmarkAdapter.this.notifyDataSetChanged();
}
closedb();
}
});
return convertView;
}
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView,
ViewGroup parent) {
// TODO Auto-generated method stub
if(convertView == null ){
convertView = View.inflate(context, R.layout.bookmarkchild, null);
childholder = new ChildViewHolder();
childholder.chapter_name = (TextView)convertView.findViewById(R.id.bookmark_chaptername);
childholder.update_time = (TextView)convertView.findViewById(R.id.bookmark_updatetime);
childholder.delchapter = (Button)convertView.findViewById(R.id.book_mark_deletechapter);
childholder.type_pic = (ImageView) convertView.findViewById(R.id.bookmark_type);
convertView.setTag(childholder);
}else{
childholder = (ChildViewHolder)convertView.getTag();
}
//���ģ����ļ�д��������
String chaptername = ""+child_data.get(groupPosition).get(childPosition).chapter_num;
try {
chaptername = fm.get_chapter_name_fornum(group_data.get(groupPosition).book_name,
child_data.get(groupPosition).get(childPosition).chapter_num);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if (chaptername == "0"){
return convertView;
}
int temp_type = child_data.get(groupPosition).get(childPosition).type;
String type_str = "";
switch (temp_type) {
case 2:
type_str = "(�ϴ��Ķ�)";
break;
case 1:
type_str = "(��ǩ)";
break;
default:
break;
}
if(temp_type == 2){
childholder.type_pic.setImageResource(R.drawable.auto_mark);
}else{
childholder.type_pic.setImageResource(R.drawable.ic_action_search);
}
String percent = child_data.get(groupPosition).get(childPosition).percent;
if (percent.length() < 3){
percent = " "+percent;
}
childholder.chapter_name.setText(type_str + chaptername );
childholder.update_time.setText("["+percent+"] "+child_data.get(groupPosition).get(childPosition).update_time);
childholder.delchapter.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
int id = child_data.get(groupPosition).get(childPosition).id;
sql = "delete from book_mark where id ="+id;
flag_sql = 1;
initdb();
try {
db.execSQL(sql);
} catch (Exception e) {
// TODO: handle exception
flag_sql = 0;
System.out.println("del chapter fail!");
}
if(flag_sql == 1){
child_data.get(groupPosition).remove(childPosition);
BookmarkAdapter.this.notifyDataSetChanged();
}
closedb();
}
});
return convertView;
}
public void changedata(Context context ,List<BookMarkGroupBean> group_data, List<List<BookMarkChildBean>> child_data ){
this.context = context;
this.child_data = child_data;
this.group_data = group_data;
BookmarkAdapter.this.notifyDataSetChanged();
}
public boolean hasStableIds() {
// TODO Auto-generated method stub
return true;
}
public boolean isChildSelectable(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return true;
}
public class GroupViewHolder
{
private TextView book_name;
private ImageView book_pic;
private Button delbook;
}
public class ChildViewHolder
{
private ImageView type_pic;
private TextView chapter_name;
private TextView update_time;
private Button delchapter;
}
}