Код: Выделить всё
public class MainActivity extends Activity {
myDataSource datasource;
String names;
String name;
ContentValues cv;
Cursor c;
long rowID; //ID строки имени позиции
int idColIndex; // номер столбца по ID
int nameColIndex; // номер столбца по имени
int peremennaya;
private static final int CM_DELETE_ALL = 1;
private static final int CM_DELETE_ID = 2;
private static final int CM_ADD_ID = 3;
EditText position_name;
ArrayList<Bazar> bazar = new ArrayList<Bazar>();
MyAdapter myAdapter;
private String LOG_TAG;
/**
* Called when the activity is first created.
*/
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myAdapter = new MyAdapter(this, bazar);
// настраиваем список
ListView lv_main = (ListView) findViewById(R.id.lv_main);
// выставляем адаптер
lv_main.setAdapter(myAdapter);
// регистратор контекстного меню
registerForContextMenu(lv_main);
// вызов ChildActivity
lv_main.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
peremennaya = position;
Intent intent = new Intent(getApplicationContext(), ChildActivity.class);
intent.putExtra("value", peremennaya);
startActivity(intent);
}
});
cv = new ContentValues();
datasource = new myDataSource(this);
bazar.add(new Bazar("Product_0", R.drawable.unread));
dbShowAll();
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(0, CM_DELETE_ALL, 0, "Удалить все позиции");
menu.add(0, CM_DELETE_ID, 0, "Удалить позицию");
menu.add(0, CM_ADD_ID, 0, "Добавить позицию");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
if (item.getItemId() == CM_DELETE_ALL) {
this.allProductsDeleteDialog();
return true;
} else {
if (item.getItemId() == CM_DELETE_ID) {
// получаем инфу о пункте списка
AdapterView.AdapterContextMenuInfo acmi = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
//получаем значение текущей id позиции в листе
rowID = acmi.id;
// подключаемся к базе данных
datasource.open();
if (c != null) {
//удаление текущей позиции из базы данных
Log.d(LOG_TAG, "--- Delete from mytabe: ---");
// удаляем из ? по значению id
int delCount = datasource.db.delete("mytable", "id = " + rowID, null);
Log.d(LOG_TAG, "row of List ID deleted, ID = " + rowID);
Log.d(LOG_TAG, "deleted rows count = " + delCount);
// физическое удаление из листа ?
bazar.remove(acmi.position);
// уведомляем, что данные изменились
myAdapter.notifyDataSetChanged();
} else {
Log.d(LOG_TAG, "Cursor is null");
c.close();
}
datasource.db.close();
return true;
} else {
if (item.getItemId() == CM_ADD_ID) {
// вызываем метод создания диалога для ввода данных
productInputDialog();
}
}
}
return super.onContextItemSelected(item);
}
void allProductsDeleteDialog() {
AlertDialog.Builder adb_main = new AlertDialog.Builder(this);
adb_main.setTitle("???");
adb_main.setMessage("Действительно удалить все содержимое");
adb_main.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// удаляем с листа все содержимое по позициям
bazar.clear();
// подключаемся к базе данных
datasource.open();
if (c != null) {
// удаляем все значения из базы данных
Log.d(LOG_TAG, "--- Clear mytable: ---");
int clearCount = datasource.db.delete("mytable", null, null);
Log.d(LOG_TAG, "deleted rows count = " + clearCount);
// уведомляем, что данные изменились
myAdapter.notifyDataSetChanged();
} else {
Log.d(LOG_TAG, "Cursor is null");
c.close();
}
datasource.close();
}
});
adb_main.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
return;
}
});
adb_main.setIcon(R.drawable.unread);
adb_main.show();
}
void productInputDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
LayoutInflater inflater = this.getLayoutInflater();
final View view = inflater.inflate(R.layout.dialog_signin_main, null);
builder.setView(view);
builder.setTitle("Добавить");
builder.setMessage("к содержимому");
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int whichButton) {
position_name = (EditText) view.findViewById(R.id.position_name);
// получаем имя из строки ввода
name = position_name.getText().toString();
// передаем значение методу dbReader()
dbReader(name);
// получаем значение names
bazar.add(new Bazar(names, R.drawable.unread));
myAdapter.notifyDataSetChanged();
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
});
builder.show();
}
public String dbReader(String names) {
this.names = names;
// подключаемся к базе данных
datasource.open();
// подготовим данные для вставки
cv.put("names", names);
// вставляем запись и получаем ее ID
rowID = datasource.db.insert("mytable", null, cv);
Log.d(LOG_TAG, "row inserted, ID = " + rowID);
// делаем запрос всех данных из таблицы mytable, получаем Cursor
c = datasource.db.query("mytable", null, null, null, null, null, null);
// ставим позицию курсора на первую строку выборки
// если в выборке нет строк, вернется false
if (c.moveToFirst()) {
// определяем номера столбцов по имени и id в выборке
idColIndex = c.getColumnIndex("id");
nameColIndex = c.getColumnIndex("names");
do {
Log.d(LOG_TAG, "ID = " + c.getInt(idColIndex) + ", name = " + c.getString(nameColIndex));
this.names = c.getString(nameColIndex);
} while (c.moveToNext());
} else {
}
c.close();
myAdapter.notifyDataSetChanged();
// закрываем подключение к БД
datasource.close();
return this.names;
}
void dbShowAll() {
// подключаемся к базе данных
datasource.open();
// получаем значения и отображаем при загрузке приложения
c = datasource.db.query("mytable", null, null, null, null, null, null);
if (c.moveToFirst()) {
nameColIndex = c.getColumnIndex("names");
do {
names = c.getString(nameColIndex);
bazar.add(new Bazar(names, R.drawable.unread));
} while (c.moveToNext());
} else {
Log.d(LOG_TAG, "Cursor is null");
c.close();
datasource.close();
}
}
}
class myDataSource {
// Database fields
public SQLiteDatabase db;
public DBHelper dbHelper;
private String LOG_TAG;
public myDataSource(Context context) {
dbHelper = new DBHelper(context);
}
public void open() throws SQLException {
db = dbHelper.getWritableDatabase();
}
public void close() {
dbHelper.close();
}
}
Заранее спасибо.