· 9 years ago · Sep 30, 2016, 08:18 PM
1public class MainActivity extends Activity {
2private static final String DATABASE_NAME = "myDatabase.db";
3private static final String DATABASE_TABLE = "mainTable";
4private static final String COLUMN_NAME = "name";
5private static final String COLUMN_ID = "_id";
6
7private static final String DATABASE_CREATE = "create table if not exists "
8 + DATABASE_TABLE + " (_id integer primary key autoincrement,"
9 + COLUMN_NAME + " text not null);";
10
11private static final int CM_DELETE_ID = 1;
12
13SQLiteDatabase myDatabase;
14
15ListView lv;
16SimpleAdapter sAdapter;
17ArrayList<Map<String, String>> data;
18Map<String, String> m;
19Cursor c;
20
21@Override
22protected void onCreate(Bundle savedInstanceState) {
23 super.onCreate(savedInstanceState);
24 setContentView(R.layout.main);
25
26 myDatabase = openOrCreateDatabase(DATABASE_NAME, MODE_PRIVATE, null);
27 myDatabase.execSQL(DATABASE_CREATE);
28
29 // упаковываем данные в понÑтную Ð´Ð»Ñ Ð°Ð´Ð°Ð¿Ñ‚ÐµÑ€Ð° Ñтруктуру
30 data = new ArrayList<Map<String, String>>();
31 c = myDatabase.query(DATABASE_TABLE, new String[] { COLUMN_ID, COLUMN_NAME }, null, null, null, null, null);
32
33 //Ñчитываем данные Ñ Ð‘Ð” и заноÑим их в data
34 if (c.moveToFirst()) {
35 do {
36 m = new HashMap<String, String>();
37 m.put(COLUMN_ID , String.valueOf(c.getInt(0)));
38 m.put(COLUMN_NAME, c.getString(1));
39
40 data.add(m);
41 } while (c.moveToNext());
42 }
43
44 // маÑÑив имен атрибутов, из которых будут читатьÑÑ Ð´Ð°Ð½Ð½Ñ‹Ðµ
45 String[] from = { COLUMN_NAME };
46 // маÑÑив ID View-компонентов, в которые будут вÑтавлÑть данные
47 int[] to = { R.id.tvText};
48
49 // Ñоздаем адаптер
50 sAdapter = new SimpleAdapter(this, data, R.layout.item, from, to);
51
52 // определÑем ÑпиÑок и приÑваиваем ему адаптер
53 lv = (ListView) findViewById(R.id.lvSimple);
54 lv.setAdapter(sAdapter);
55 registerForContextMenu(lv);
56
57 lv.setOnItemClickListener(new OnItemClickListener() {
58 public void onItemClick(AdapterView<?> parent, View v,
59 int position, long id) {
60
61 CharSequence text = ((TextView) v).getText();
62
63 int duration = Toast.LENGTH_LONG;
64 Context context = getApplicationContext();
65
66 **//КÐК ПРÐВИЛЬÐО ВЫВЕСТИ id из БД?** (тут чушь)
67 String where = " name = " + "'" + text + "'";
68
69 c = myDatabase.query(true, DATABASE_TABLE,
70 new String[] { "_id" }, where, null, null, null, null,
71 null);
72 c.moveToFirst();
73
74 CharSequence columnValue = String.valueOf(c.getInt(0));
75
76 Toast.makeText(context, columnValue, duration).show();
77 }
78 });
79}
80
81@Override
82public void onCreateContextMenu(ContextMenu menu, View v,
83 ContextMenu.ContextMenuInfo menuInfo) {
84
85 super.onCreateContextMenu(menu, v, menuInfo);
86 menu.add(0, CM_DELETE_ID, 0, "Удалить запиÑÑŒ");
87}
88
89@Override
90public boolean onContextItemSelected(MenuItem item) {
91 if (item.getItemId() == CM_DELETE_ID) {
92 // получаем инфу о пункте ÑпиÑка
93 AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item
94 .getMenuInfo();
95
96 // удалÑем Map из коллекции, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸ÑŽ пункта в ÑпиÑке
97 data.remove(acmi.position);
98 // уведомлÑем, что данные изменилиÑÑŒ
99 sAdapter.notifyDataSetChanged();
100
101 myDatabase.delete(DATABASE_TABLE, COLUMN_ID + " = " **ЧТО СЮДРВПИСÐТЬ???**, null);
102
103 return true;
104 }
105 return super.onContextItemSelected(item);
106}
107
108@Override
109public boolean onContextItemSelected(MenuItem item) {
110 if (item.getItemId() == CM_DELETE_ID) {
111 // получаем инфу о пункте ÑпиÑка
112 AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item
113 .getMenuInfo();
114
115 myDatabase.delete(DATABASE_TABLE, COLUMN_ID + " = " + acmi.id, null);
116 cursor.requery();
117 return true;
118 }
119 return super.onContextItemSelected(item);
120}