package com.jk; import java.util.List; import android.app.AlertDialog; import android.app.ListActivity; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import com.jk.R; import com.jk.service.DbHelper; import com.jk.service.DiaryAdapter; public class MainActivity extends ListActivity { private static final int NEWDIARY = 0; private static final int HELP = 1; private static final int EXIT = 2; private static final int EDIT = 1; private static final int DELETE = 2; private static final int CANCEL = 4; private static final int DELETEALL = 3; private ListView listview; private int list_position; private DbHelper dbOpenHelper; private MyAdapter adapter; private List<Diary> mData; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); dbOpenHelper = new DbHelper(this); showView(); } // 刷新ListView界面数据 public void showView() { setContentView(R.layout.main); listview = (ListView) findViewById(android.R.id.list);// 使用系统默认的list DiaryAdapter diaryAdapter = new DiaryAdapter(this); // ID资源标识符 setTitle(getResources().getString(R.string.app_name) + getResources().getString(R.string.gongyou) + " " + (int) diaryAdapter.getCount() + " " + getResources().getText(R.string.pianriji)); if ((int) diaryAdapter.getCount() == 0) { setTitle(getResources().getString(R.string.app_name) + getResources().getString(R.string.no_diary)); Toast.makeText(MainActivity.this, R.string.No_data, 1).show(); } else { mData = diaryAdapter.getScrollData(0, (int) diaryAdapter.getCount()); adapter = new MyAdapter(this); listview.setAdapter(adapter); registerForContextMenu(getListView()); } } // 创建菜单选项 public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, NEWDIARY, 0, R.string.menu_newDiary).setIcon( android.R.drawable.ic_menu_crop); menu.add(0, HELP, 0, R.string.menu_help).setIcon( android.R.drawable.ic_menu_help); menu.add(0, EXIT, 0, R.string.menu_exit).setIcon( android.R.drawable.ic_menu_close_clear_cancel); return super.onCreateOptionsMenu(menu); } // 菜单按钮点击事件处理 public boolean onOptionsItemSelected(MenuItem item) { Intent intent = null; switch (item.getItemId()) { case NEWDIARY: intent = new Intent(MainActivity.this, NewDiaryActivity.class); startActivity(intent); break; case HELP: intent = new Intent(MainActivity.this, About.class); startActivity(intent); break; case EXIT: finish(); break; } return super.onOptionsItemSelected(item); } // 单击每个列表项产生的事件 protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); Intent intent = new Intent(); intent.putExtra("id", mData.get(position).getId()); intent.putExtra("title", mData.get(position).getTitle()); intent.putExtra("body", mData.get(position).getBody()); intent.putExtra("time", mData.get(position).getTime()); intent.setClass(MainActivity.this, ShowSingleDiary.class); startActivity(intent); } // 产生类似于windows上的右键菜单,轻松处理列表中的项 public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); menu.setHeaderTitle(R.string.option).add(0, EDIT, 0, R.string.contextmenu_enter); menu.add(0, DELETE, 0, R.string.contextmenu_delete); menu.add(0, DELETEALL, 0, R.string.delete_all); menu.add(0, CANCEL, 0, R.string.new_cancelButton); } // 为上下文菜单写事件 public boolean onContextItemSelected(MenuItem item) { // 在上下文菜单中得到点击的item的position,然后可对item进行操作 list_position = ((AdapterContextMenuInfo) item.getMenuInfo()).position;// 列表位置从0开始 Intent intent = new Intent(); switch (item.getItemId()) { case EDIT: intent.putExtra("id", mData.get(list_position).getId()); intent.putExtra("title", mData.get(list_position).getTitle()); intent.putExtra("body", mData.get(list_position).getBody()); intent.setClass(MainActivity.this, UpdateDiaryActivity.class); startActivity(intent); break; case DELETE: showOptional(); break; case DELETEALL: showOptional2(); case CANCEL: } return super.onContextItemSelected(item); } // 返回主页面时调用的函数 protected void onRestart() { super.onRestart(); showView(); } public void showOptional() { new AlertDialog.Builder(this) .setTitle(R.string.AlertDialog_title) .setMessage(getResources().getString(R.string.optional_msg)) .setPositiveButton( getResources().getString(R.string.optional_left), new OnClickListener() { public void onClick(DialogInterface dialog, int which) { DiaryAdapter adapter = new DiaryAdapter( MainActivity.this); adapter.delete(mData.get(list_position).getId()); // 注意索引ID showView(); } }) .setNegativeButton( getResources().getString(R.string.optional_right), new OnClickListener() { public void onClick(DialogInterface dialog, int which) { showView(); } }).show(); } public void showOptional2() { new AlertDialog.Builder(this) .setTitle(R.string.AlertDialog_title) .setMessage(getResources().getString(R.string.optional_msg)) .setPositiveButton( getResources().getString(R.string.optional_left), new OnClickListener() { public void onClick(DialogInterface dialog, int which) { SQLiteDatabase db = dbOpenHelper .getWritableDatabase(); db.delete("diary", null, null); db.close(); Toast.makeText(MainActivity.this, R.string.Toast_deleteAll, 0).show(); showView(); } }) .setNegativeButton( getResources().getString(R.string.optional_right), new OnClickListener() { public void onClick(DialogInterface dialog, int which) { showView(); } }).show(); } class MyAdapter extends BaseAdapter { ViewHolder holder; private LayoutInflater mInflater; public MyAdapter(Context context) { this.mInflater = LayoutInflater.from(context); } public int getCount() { return mData.size(); } public Object getItem(int arg0) { return null; } public long getItemId(int position) { return 0; } public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { holder = new ViewHolder(); convertView = mInflater.inflate(R.layout.diary_item, null); holder.id = (TextView) convertView.findViewById(R.id.item_id); holder.title = (TextView) convertView.findViewById(R.id.item_title); holder.body = (TextView) convertView.findViewById(R.id.item_preRead); holder.time = (TextView) convertView.findViewById(R.id.item_time); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.id.setText(mData.get(position).getId() + ""); holder.title.setText(mData.get(position).getTitle()); holder.body.setText(mData.get(position).getBody()); holder.time.setText(mData.get(position).getTime()); return convertView; } } }
package com.jk; import java.sql.Date; import com.jk.R; import com.jk.service.DiaryAdapter; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class NewDiaryActivity extends Activity { private Button button_save; private Button button_exit; private EditText text_title; private EditText text_body; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.newdiary); findView(); setListener(); } public void findView() { setTitle(R.string.createNew); button_save=(Button) findViewById(R.id.new_save); button_exit=(Button) findViewById(R.id.new_cancel); text_title = (EditText)findViewById(R.id.text_title); text_body = (EditText)findViewById(R.id.text_body); text_title.setHint(R.string.title_hint); text_body.setHint(R.string.body_hint); } public void setListener() { button_save.setOnClickListener(new View.OnClickListener(){ //保存按钮点击事件 @Override public void onClick(View v) { DiaryAdapter adapter = new DiaryAdapter(NewDiaryActivity.this); Diary diary = new Diary(text_title.getText().toString(), text_body.getText().toString(),new Date(System.currentTimeMillis()).toString()); adapter.save(diary); //提交后将输入框清空 text_title.setText(""); text_body.setText(""); button_exit.setText(R.string.resume); text_body.clearFocus();//让焦点回到title上 Toast.makeText(NewDiaryActivity.this, R.string.Toast_save, 0).show(); }}); button_exit.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { finish(); }}); } }
package com.jk; import com.jk.R; import com.jk.R.id; import com.jk.R.layout; import com.jk.R.string; import com.jk.service.DiaryAdapter; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.content.DialogInterface.OnClickListener; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.Window; import android.view.WindowManager; import android.widget.TextView; /** * 这个版本的menu菜单是好的,可通过这个来修复新版本的menu菜单 * @author Administrator * */ public class ShowSingleDiary extends Activity { private TextView view_id; private TextView view_title; private TextView view_body; private TextView view_time; int id; private static final int MODIFY = 0; private static final int NEW = 1; private static final int DELETE = 2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 去掉Title requestWindowFeature(Window.FEATURE_NO_TITLE); // 全屏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); showView(); } public void showView() { Intent intent = getIntent(); id = intent.getIntExtra("id", 0); String title = intent.getStringExtra("title"); String body = intent.getStringExtra("body"); String time = intent.getStringExtra("time"); setContentView(R.layout.show_single_diary); view_id = (TextView)findViewById(R.id.simple_text_id); view_title = (TextView) findViewById(R.id.simple_text_title); view_body = (TextView) findViewById(R.id.simple_text_body); view_time= (TextView) findViewById(R.id.simple_text_time); view_id.setText(id+""); view_title.setText(title); view_body.setText(body); view_time.setText(time); view_id.setVisibility(TextView.INVISIBLE); } // 创建菜单选项 @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, MODIFY, 0, R.string.contextmenu_enter).setIcon( android.R.drawable.ic_menu_crop); menu.add(0, NEW, 0, R.string.menu_newDiary).setIcon( android.R.drawable.btn_star_big_on); menu.add(0, DELETE, 0, R.string.contextmenu_delete).setIcon( android.R.drawable.ic_menu_help); return super.onCreateOptionsMenu(menu); } // 菜单按钮点击事件处理 @Override public boolean onOptionsItemSelected(MenuItem item) { Intent intent = new Intent(); switch (item.getItemId()) { case MODIFY: intent.putExtra("id",id); intent.putExtra("title",view_title.getText()); intent.putExtra("body",view_body.getText()); intent.setClass(ShowSingleDiary.this, UpdateDiaryActivity.class); startActivity(intent); break; case NEW: intent.setClass(ShowSingleDiary.this, NewDiaryActivity.class); startActivity(intent); break; case DELETE: showOptional(); break; } return super.onOptionsItemSelected(item); } private void showOptional() { new AlertDialog.Builder(this) .setTitle(R.string.AlertDialog_title) .setMessage(getResources().getString(R.string.optional_msg)) .setPositiveButton(getResources().getString(R.string.optional_left),new OnClickListener() { public void onClick(DialogInterface dialog,int which) { DiaryAdapter adapter = new DiaryAdapter(ShowSingleDiary.this); adapter.delete(id); // 注意索引ID finish(); } }) .setNegativeButton(getResources().getString(R.string.optional_right),new OnClickListener() { public void onClick(DialogInterface dialog,int which) { showView(); } }).show(); } }
package com.jk; import java.sql.Date; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.jk.R; import com.jk.R.id; import com.jk.R.layout; import com.jk.R.string; import com.jk.service.DiaryAdapter; public class UpdateDiaryActivity extends Activity { private EditText text_title; private EditText text_body; private Button button_save; private Button button_exit; private int id; private String title; private String body; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.newdiary); showView(); setListener(); } public void showView() { Intent intent = getIntent(); id = intent.getIntExtra("id", 0); title = intent.getStringExtra("title"); body = intent.getStringExtra("body"); setTitle(R.string.title_update); text_title = (EditText) findViewById(R.id.text_title); text_body = (EditText) findViewById(R.id.text_body); button_save=(Button) findViewById(R.id.new_save); button_exit=(Button) findViewById(R.id.new_cancel); text_title.setText(title); text_body.setText(body); } public void setListener() { button_save.setOnClickListener(new View.OnClickListener() { // 保存按钮点击事件 @Override public void onClick(View v) { DiaryAdapter adapter = new DiaryAdapter( UpdateDiaryActivity.this); Diary diary = new Diary(text_title.getText().toString(), text_body.getText().toString(), new Date(System .currentTimeMillis()).toString()); diary.setId(id); adapter.update(diary); Toast.makeText(UpdateDiaryActivity.this, R.string.Toast_Update, 1) .show(); finish(); } }); button_exit.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { finish(); } }); } }
package com.jk; import android.widget.TextView; public class ViewHolder { public TextView id; public TextView title; public TextView body; public TextView time; }
package com.jk; import com.jk.R; import com.jk.R.id; import com.jk.R.layout; import com.jk.R.string; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class About extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTheme(android.R.style.Theme_Dialog); setContentView(R.layout.about); setTitle(R.string.about_window_title); TextView textView = (TextView) findViewById(R.id.about_title), textView2 = (TextView)findViewById(R.id.about_msg); textView.setText(R.string.about_title); textView2.setText(" " + getResources().getString(R.string.about_msg)); } }
package com.jk; public class Diary { private int diaryId; private String title; private String body; private String time; public Diary(int diaryId, String title, String body, String time) { this.diaryId = diaryId; this.title = title; this.body = body; this.time = time; } public Diary( String title, String body, String time) { this(0, title, body ,time); } public int getId() { return diaryId; } public void setId(int diaryId) { this.diaryId = diaryId; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getBody() { return body; } public void setBody(String body) { this.body = body; } public String getTime() { return time; } public void setTime(String time) { this.time = time; } public String toString() { return "Diary [diaryId=" + diaryId + ", title=" + title + ", body=" + body + ", time=" + time + "]"; } }
原文:http://blog.csdn.net/jkxqj/article/details/23005301