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

ListView+onCreateContextMenu->AlertDialog->dbSQLite - Android

Восстановить пароль Регистрация
Другие темы раздела
Android Xml Yahoo http://www.cyberforum.ru/android-dev/thread1362830.html
Всем привет, помогайте, ничего не могу понять(( Вкраце, юзаю Yahoo для получения списка городов, рагаюсь у них получаю appid. Дальше весело http://http://where.yahooapis.com/v1/places.q(%2A);count=10?appid= Так вот, если название города пишу на русском то ссылочка с xml файлом открывается в браузере, и там все города на русском все координаты и тд. И если город пишу на английском то все...
Android Приоритет отображения анимации интерфейса Здравствуйте. Проблема в следующем: Дано: В LinerLoyout есть три элемента (кнопка), они расположены рядом друг с другом, к каждой кнопке привязана анимация которая срабатывает при нажатии. Проблема: Если область анимации при проигрывании заходит на область рядомстоящей кнопки, то она (анимация) отображается "под" кнопкой, а не над ней, как хотелось бы. P.S.: Нужно чтобы анимация... http://www.cyberforum.ru/android-dev/thread1362717.html
Canvas поверх GridLayout Android
Рад всех приветствовать! Чтобы лучше понять мой вопрос, представьте себе игру крестики-нолики. Когда кто-нибудь выигрывает, выигрышный ряд зачёркивается линией. Так вот, у меня имеется таблица GridLayout. Она имеет ячейки типа ImageView. Нужно сделать так, чтобы через эти ячейки можно было провести линию (по горизонтали, по вертикали или по диагонали). Решил поизучать такие классы, как...
Android Получить путь к карте памяти (SD card)
Не педелитесь методом, который возвращает путь к карте памяти, если она есть? Нащел вот такой метод в интернете, но на некоторых устройствах работает некорректо. Например на galaxy s3 все ок, а вот на s4 не находит. public static HashSet<String> getExternalMounts() { final HashSet<String> out = new HashSet<String>(); String reg =...
Android Как частично заполнить цветом кнопку http://www.cyberforum.ru/android-dev/thread1362671.html
Всем привет.Подскажите как частично заполнить цветом кнопку как на картинке, с возможностью регулирования заполненности. Спасибо.
Android Если смысл использовать login activity в Android Studio? Или писать самому? Есть ли исходники логин-пароль окна? подробнее

Показать сообщение отдельно
disx
18 / 18 / 0
Регистрация: 26.02.2014
Сообщений: 401
27.01.2015, 10:08     ListView+onCreateContextMenu->AlertDialog->dbSQLite
Прошу помощи, т.к. вроде все складно, но не работает, вероятно проблема в получении id для передачи в метод updRec, подскажите пожалуйста кто сможет, несмотря на то что AlertDialog устарел присутствует странное и непреодолимое чувство разобраться и поставить точку в данном вопросе.

OneActivity.java содержит:

Java
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
111
112
113
114
115
116
117
118
119
120
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.one);
 
        DB.etName = (EditText) findViewById(R.id.editText1);
        // открываем подключение к БД
        db = new DB(this);
        db.open();
 
        // получаем курсор
        cursor = db.getAllData();
        startManagingCursor(cursor);
 
        // формируем столбцы сопоставления
        String[] from = new String[] { DB.COLUMN_TXT };
        int[] to = new int[] {R.id.tvText };
 
        // создааем адаптер и настраиваем список
        scAdapter = new SimpleCursorAdapter(this, R.layout.item, cursor, from,
                to);
        lvData = (ListView) findViewById(R.id.listView1);
        lvData.setAdapter(scAdapter);
 
        // добавляем контекстное меню к списку
        registerForContextMenu(lvData);
        
        
        
    }
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.add(0, CM_EDIT_ID, 0, R.string.edit_record);
        menu.add(0, CM_DELETE_ID, 0, R.string.delete_record);
    }
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {
        
        final EditText textName = (EditText)findViewById(R.id.editText1);
        //cursor.moveToPosition(this.getSelectedItemPosition());
        id_col=cursor.getInt(0);
        textName.setText(cursor.getString(1));
        
        ContentValues val=new ContentValues(2);
        val.put(DB.COLUMN_TXT, textName.getText().toString());
        cursor.requery();
        // TODO Auto-generated method stub
        
    }
    @SuppressWarnings("deprecation")
    public boolean onContextItemSelected(MenuItem item) {
        
        if (item.getItemId() == CM_EDIT_ID) {
            AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item
                    .getMenuInfo();
            cursor.moveToPosition(acmi.position);
            showDialog(IDD_EDIT);
        
        }
 
        if (item.getItemId() == CM_DELETE_ID) {
            // получаем из пункта контекстного меню данные по пункту списка
            AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item
                    .getMenuInfo();
            // извлекаем id записи и удаляем соответствующую запись в БД
            db.delRec(acmi.id);
            // обновляем курсор
            cursor.requery();
            return true;
        }
        return super.onContextItemSelected(item);
    }
 
    @Override
    protected void onPrepareDialog(int id, Dialog dialog) {
        super.onPrepareDialog(id, dialog);
        
    removeDialog(id);       
    }
    @SuppressLint("InflateParams")
    protected Dialog onCreateDialog(int id) {
        switch (id) {
        case IDD_EDIT:
            LayoutInflater inflater = LayoutInflater.from(this);
            View root = inflater.inflate(R.layout.dial, null);
            final EditText textName = (EditText) root.findViewById(R.id.name);
 
            textName.setText(cursor.getString(2));
 
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setView(root);
            builder.setTitle(R.string.title_edit);
            builder.setPositiveButton("Yes",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            
                             String name = textName.getText().toString();
                            
                             
                db.updRec(id, name);//думаю что проблема в получении id, 
                      //но могу ошибаться, "зеленый" еще.
                                        
                        }
                    });
            builder.setNegativeButton("No",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            
                            dialog.cancel();
                             
                        }
                    });
            
            builder.setCancelable(false);
            removeDialog(id);
            return builder.create();
        default:
            return null;
        }
    }
DB.java содержит:

Java
1
2
3
4
5
6
7
8
9
 public void updRec(int id, String name) {
          ContentValues val=new ContentValues();
          name = etName.getText().toString();
            
            val.put(COLUMN_TXT, name);
            
            mDB.update(DB_TABLE, val, "_id = " + id,null);
            
          }
когда после клика на айтеме вылетает алерт диалог с полученным текстом, после изменения кликаем OK и посыпалось:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
01-27 06:58:23.513: E/AndroidRuntime(379): FATAL EXCEPTION: main
01-27 06:58:23.513: E/AndroidRuntime(379): java.lang.NullPointerException
01-27 06:58:23.513: E/AndroidRuntime(379):  at com.crib1.DB.updRec(DB.java:71)
01-27 06:58:23.513: E/AndroidRuntime(379):  at com.crib1.OneActivity$1.onClick(OneActivity.java:148)
01-27 06:58:23.513: E/AndroidRuntime(379):  at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:159)
01-27 06:58:23.513: E/AndroidRuntime(379):  at android.os.Handler.dispatchMessage(Handler.java:99)
01-27 06:58:23.513: E/AndroidRuntime(379):  at android.os.Looper.loop(Looper.java:123)
01-27 06:58:23.513: E/AndroidRuntime(379):  at android.app.ActivityThread.main(ActivityThread.java:3683)
01-27 06:58:23.513: E/AndroidRuntime(379):  at java.lang.reflect.Method.invokeNative(Native Method)
01-27 06:58:23.513: E/AndroidRuntime(379):  at java.lang.reflect.Method.invoke(Method.java:507)
01-27 06:58:23.513: E/AndroidRuntime(379):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-27 06:58:23.513: E/AndroidRuntime(379):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-27 06:58:23.513: E/AndroidRuntime(379):  at dalvik.system.NativeStart.main(Native Method)
помогите пожалуйста поправить?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru