package com.dotcool.view; import java.util.ArrayList; import android.app.AlertDialog; import android.app.ListActivity; import android.content.ContentResolver; import android.content.DialogInterface; import android.content.Intent; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; import android.support.v4.view.MenuItemCompat.OnActionExpandListener; import android.view.ActionProvider; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.KeyEvent; import android.view.MenuItem.OnMenuItemClickListener; import android.view.SubMenu; import android.view.View; import android.view.View.OnCreateContextMenuListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import com.dotcool.R; import com.dotcool.bll.DbDataOperation; import com.dotcool.bll.DbTags; import com.dotcool.model.BookMark; import com.dotcool.util.AppUtil; public class BookmarkActivity extends ListActivity { private ListView lvBookMark; private ContentResolver resolver; private ArrayList<BookMark> bookMarks = new ArrayList<BookMark>(); private BookMark bookMark; CustomAdapter adapter = new CustomAdapter(); private int currentPosition; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); lvBookMark = getListView(); resolver = getContentResolver(); bookMarks = DbDataOperation.getBookMark(resolver); lvBookMark.setBackgroundResource(R.drawable.bg_listview); lvBookMark.setAdapter(adapter); lvBookMark.setDivider(null); lvBookMark.setCacheColorHint(000000); lvBookMark.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { currentPosition = position; intentToRead(); } }); lvBookMark.setOnCreateContextMenuListener(new OnCreateContextMenuListener() { public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo; currentPosition = info.position; menu.add(Menu.NONE,R.id.menu_open,0,"打开"); menu.add(Menu.NONE, R.id.menu_del, 1, "删除 " ); menu.add(Menu.NONE, R.id.menu_des, 1, "详细 " ); } }); } public boolean onOptionsItemSelected(android.view.MenuItem item) { switch (item.getItemId()) { case R.id.menu_open: intentToRead(); return true; case R.id.menu_del: new AlertDialog.Builder(this).setTitle("删除").setMessage("真的要删除吗?").setPositiveButton("确定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { resolver.delete(Uri.parse(DbTags.URI_TABLE_BOOK_MARK), DbTags.FIELD_BOOK_MARK_ID+"=?", new String[]{bookMarks.get(currentPosition).getBookMarkId()+""}); updateView(); } }).setNegativeButton("取消", null).show(); return true; case R.id.menu_des: String bookDetail = "书名:"+bookMarks.get(currentPosition).getBookName()+ "\n进度:"+bookMarks.get(currentPosition).getBookMarkProgress()+ "\n添加时间:"+bookMarks.get(currentPosition).getBookMarkAddTime(); new AlertDialog.Builder(this).setTitle("详细信息").setMessage(bookDetail).setPositiveButton("确定", null).show(); return true; } return super.onOptionsItemSelected(item); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode==KeyEvent.KEYCODE_BACK) { AppUtil.appExit(this); } return super.onKeyDown(keyCode, event); } @Override protected void onResume() { super.onResume(); updateView(); } class CustomAdapter extends BaseAdapter { ImageView lvBookMark; TextView tvBookName,tvBookMarkProgress,tvBookMarkDetail; public int getCount() { return bookMarks.size(); } public Object getItem(int position) { return null; } public long getItemId(int position) { return 0; } public View getView(int position, View convertView, ViewGroup parent) { bookMark = bookMarks.get(position); if(convertView==null) convertView = (LinearLayout)getLayoutInflater().inflate(R.layout.bookmark_lv_item, null); lvBookMark = (ImageView)convertView.findViewById(R.id.ivBookMark); tvBookName = (TextView)convertView.findViewById(R.id.tvBookName); tvBookMarkDetail = (TextView)convertView.findViewById(R.id.tvBookMarkDetail); tvBookMarkProgress = (TextView)convertView.findViewById(R.id.tvBookMarkProgress); tvBookName.setText(bookMark.getBookName()); tvBookMarkDetail.setText(bookMark.getBookMarkDetail()); tvBookMarkProgress.setText(bookMark.getBookMarkProgress()); return convertView; } } /* @Override protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); // Get the item that was clicked BookMark page = (BookMark) adapter.getItem(position); // Create new intent }*/ /** * 跳转到阅读界面 */ public void intentToRead() { Intent intent = new Intent(BookmarkActivity.this,BookReadActivity.class); intent.putExtra(DbTags.FIELD_BOOK_PATH, bookMarks.get(currentPosition).getBookPath()); intent.putExtra(DbTags.FIELD_BOOK_ID, bookMarks.get(currentPosition).getBookId()); intent.putExtra(DbTags.FIELD_BOOK_PROGRESS, bookMarks.get(currentPosition).getBookMarkProgress()); intent.putExtra(DbTags.FIELD_BOOK_NAME, bookMarks.get(currentPosition).getBookName()); intent.putExtra(DbTags.FIELD_BOOK_BEGIN_POSITION, bookMarks.get(currentPosition).getBookMarkBeginPosition()); startActivity(intent); } /** * 更新界面 */ public void updateView() { bookMarks = DbDataOperation.getBookMark(resolver); adapter.notifyDataSetChanged(); } }