Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
toxic_wower
0 / 0 / 0
Регистрация: 23.04.2014
Сообщений: 12
#1

Update в ListView - Программирование Android

28.04.2014, 08:43. Просмотров 436. Ответов 0
Метки нет (Все метки)

BD:
Javascript
1
2
3
4
5
6
7
public void updateRec(String txt, long id) {
        ContentValues cv = new ContentValues();
        cv.put(COLUMN_TXT, txt);
        mDB.update(DB_TABLE, cv, COLUMN_ID + " =? ",
                new String[] { String.valueOf(id) });
 
    }
MainActivity:
Javascript
1
2
3
4
5
6
7
8
9
10
11
.setPositiveButton("OK",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog,
                                        int id) {
                                    EditText editTextDialogUserInput = userInput;
                                    db.updateRec(editTextDialogUserInput
                                            .getText().toString(), 3);
                                    editTextDialogUserInput.setText("");
                                    cursor.requery();
 
                                }
Жму на любую строчку из ListView открывается диалог, ввожу любое значение и текст отображается на 3й строчке.
Если поменяю значение на 4 то будет редактироваться 4 строчка, независимо от того на какую строчку я нажму.
Javascript
1
2
db.updateRec(editTextDialogUserInput
.getText().toString(), 4);
Как сделать чтобы редактировалась именно та строчка на которую жму?


Вот полный код для BD:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
public class DB {
 
    // protected static final long id = 1;
 
    private static final String DB_NAME = "mydb";
    private static final int DB_VERSION = 1;
    private static final String DB_TABLE = "mytab";
 
    public static final String COLUMN_ID = "_id";
    public static final String COLUMN_IMG = "img";
    public static final String COLUMN_TXT = "txt";
    public static final String COLUMN_NAME = "name";
 
    private static final String DB_CREATE = "create table " + DB_TABLE + "("
            + COLUMN_ID + " integer primary key autoincrement, " + COLUMN_IMG
            + " integer, " + COLUMN_TXT + " text" + "," + COLUMN_NAME + " "
            + ");";
 
    private final Context mCtx;
 
    private DBHelper mDBHelper;
    private SQLiteDatabase mDB;
 
    public DB(Context ctx) {
        mCtx = ctx;
    }
 
    // открыть подключение
    public void open() {
        mDBHelper = new DBHelper(mCtx, DB_NAME, null, DB_VERSION);
        mDB = mDBHelper.getWritableDatabase();
    }
 
    // закрыть подключение
    public void close() {
        if (mDBHelper != null)
            mDBHelper.close();
    }
 
    // получить все данные из таблицы DB_TABLE
    public Cursor getAllData() {
        return mDB.query(DB_TABLE, null, null, null, null, null, null);
    }
 
    // добавить запись в DB_TABLE
    public void addRec(String txt, int img) {
        ContentValues cv = new ContentValues();
        cv.put(COLUMN_TXT, txt);
        cv.put(COLUMN_IMG, img);
        mDB.insert(DB_TABLE, null, cv);
    }
 
    // редактировать
    public void updateRec(String txt, long id) {
        ContentValues cv = new ContentValues();
        cv.put(COLUMN_TXT, txt);
        mDB.update(DB_TABLE, cv, COLUMN_ID + " =? ",
                new String[] { String.valueOf(id) });
 
    }
 
    public void delRec(long id) {
        mDB.delete(DB_TABLE, COLUMN_ID + " = " + id, null);
    }
 
    // класс по созданию и управлению БД
    private class DBHelper extends SQLiteOpenHelper {
 
        public DBHelper(Context context, String name, CursorFactory factory,
                int version) {
            super(context, name, factory, version);
        }
 
        // создаем и заполняем БД
        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL(DB_CREATE);
 
            ContentValues cv = new ContentValues();
            for (int i = 1; i < 2; i++) {
                cv.put(COLUMN_TXT, "Ввести время " + i);
                // cv.put(COLUMN_IMG, R.drawable.ic_launcher);
                db.insert(DB_TABLE, null, cv);
            }
        }
 
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        }
    }
 
}
MainActivity:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
public class MainActivity extends Activity {
 
    // protected static final long id = 1;
 
    final String TAG = "myLogs";
 
    final Context context = this;
    final int DIALOG_EDIT = 1;
 
    ListView lvMain;
    DB db;
    Cursor cursor;
    SimpleCursorAdapter scAdapter;
 
    /** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        // открываем подключение к БД
        db = new DB(this);
        db.open();
 
        // получаем курсор
        cursor = db.getAllData();
        startManagingCursor(cursor);
 
        // формируем столбцы сопоставления
        String[] from = new String[] { DB.COLUMN_IMG, DB.COLUMN_TXT };
        int[] to = new int[] { R.id.ivImg, R.id.tvText };
 
        // создааем адаптер и настраиваем список
        scAdapter = new SimpleCursorAdapter(this, R.layout.item, cursor, from,
                to);
        lvMain = (ListView) findViewById(R.id.lvMain);
        lvMain.setAdapter(scAdapter);
 
        // Связываемся с ListView
        ListView lvMain = (ListView) findViewById(R.id.lvMain);
 
        lvMain.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                showDialog(DIALOG_EDIT);
            }
        });
 
    }
 
    protected Dialog onCreateDialog(int id) {
        if (id == DIALOG_EDIT) {
            AlertDialog.Builder adb = new AlertDialog.Builder(this);
 
            // !
            // get prompts.xml view
            LayoutInflater li = LayoutInflater.from(context);
            View promptsView = li.inflate(R.layout.promts, null);
 
            AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                    context);
 
            // set prompts.xml to alertdialog builder
            alertDialogBuilder.setView(promptsView);
 
            final EditText userInput = (EditText) promptsView
                    .findViewById(R.id.editTextDialogUserInput);
 
            // set dialog message
            alertDialogBuilder
                    .setCancelable(false)
                    .setPositiveButton("OK",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog,
                                        int id) {
                                    EditText editTextDialogUserInput = userInput;
                                    db.updateRec(editTextDialogUserInput
                                            .getText().toString(), 3);
                                    editTextDialogUserInput.setText("");
                                    cursor.requery();
 
                                }
                            })
                    .setNegativeButton("Cancel",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog,
                                        int id) {
                                    dialog.cancel();
                                }
                            });
 
            // create alert dialog
            AlertDialog alertDialog = alertDialogBuilder.create();
 
            // show it
            alertDialog.show();
 
        }
 
        // !
 
        return super.onCreateDialog(id);
    }
 
    protected void onDestroy() {
        super.onDestroy();
        // закрываем подключение при выходе
        db.close();
    }
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2014, 08:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Update в ListView (Программирование Android):

ListView. После добавления кнопки перестал быть доступен сам ListView - Программирование Android
Кастомизировал ListView с помощью нескольких TextView. Но после того, как добавил ImageButton сам список стал недоступен для клика, а...

Listview вывод данных и переход по нажатию на другой Listview SQLite - Программирование Android
Доброго извините за название темы, долго не мог сформировать название, В общем у меня беда с пытаюсь написать программу где первый экран...

Данные из SQlite в ListView, обработка события ListView - Программирование Android
Ребят, есть БД, ListView. Надо при нажатии на строчку ListView вытащить данные int из БД. mList.setOnItemClickListener(new...

ListView, ToggleButton, SQLite, CursorAdapter. Как найти idItem в ListView, где была нажата ToggleButton? - Программирование Android
Добрый день. Затрудняюсь понять один момент: У меня есть ListView, который заполнен Items. Каждый Item - это свой XML. Пока...

Копирование данных из 1 listView во 2 listView - Программирование Android
Нужно что бы при нажатии на один элемент в первом ListView он копировался во второй ListView причём многократно.Но я использую...

Использование ListView в ListView - Программирование Android
Всем привет. Можете показать как использовать ListView в ListView, с заполнением как внешнего ListView, так и внутреннего причем с...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2014, 08:43
Привет! Вот еще темы с ответами:

Переход из Listview в Listview - Программирование Android
Как сделать, что бы когда нажимаешь в главном листвью на кнопку, открывалось новое нужное(т.е. то по которому тапнули) активити с другим...

Update Android Studio 1.0 - Программирование Android
У меня стоит AS 1.0 я хочу обновится до 1.3 используя Update, которое вылазеет в правом верхнем углу. Это безопасно после такого обновления...

Update Google Play Services - Программирование Android
Cтолкнулся со следующей проблемой: W/GooglePlayServicesUtil: Google Play services out of date. Requires 10084000 but found 9879470 ...

SQlite Insert, delete, update - Программирование Android
Добрый день. Возник такой вопрос. Есть база с таблицей MailSettings. Она пустая. При первом сохранении настроек, все понятно (Insert). ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru