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

ListView, База данных и SimpleCursorAdapter - onItemClick срабатывает только после добавления данных - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Работа с TextToSpeech http://www.cyberforum.ru/android-dev/thread1302224.html
Доброго времени суток! Есть тут кто мне поможет! TTS имеет свои локальные языки для работы, а с другими языками как быть? Посоветуйте, помогите кто знает!
Android Автозапуск BroadcastReceiver после перезагрузки В общем в приложении есть два BroadcastReceiver'а 1-ый отвечает за автозапуск приложения после перезагрузки телефона, 2-ой за получение СМС сообщения. Так вот после того как телефон перезагрузить и приложение автоматически запуститься 2-ой BroadcastReceiver не работает, т.е. смс не перехватывает. Начинает работать только после перезапуска самого приложения. http://www.cyberforum.ru/android-dev/thread1302216.html
Приём СМС Android
Здравствуйте! Уже не первый день пытаюсь прочитать своим приложением входящее сообщение, но безрезультатно. На гаджете вообще программа никак не реагирует, а эмулятор вылетает со словами "Unfortunately, sms has stopped" Вроде бы всё делал по видео: http://youtu.be/op_7cUKceaA Помогите пожалуйста разобраться в чём проблема) Манифест: <?xml version="1.0" encoding="utf-8"?> <manifest...
Портирование на Андроид Android
Здравствуйте! В своё время насмотрелся "Во все тяжкие" и запилил программку на Java под ПК Хотелось бы портануть на Андроид. Программирование под оного знаю плохо. Как сделать подобный вывод? С помощью метода setText класса EditText? Если да, то как так же динамически для разных кусков менять стиль, шрифт, размер текста?
Android Android Studio: ошибки http://www.cyberforum.ru/android-dev/thread1301922.html
При попытке запустить приложение, выдаёт такую ошибку: Unexpected error: package manager reports that package <имя_пакета> has not been installed Почему не установлен? Добавлено через 1 час 29 минут Было что-то непонятное с телефоном. Перепрошил. Сейчас всё хорошо
Android Получить экземпляр класса по переменой класса Создал класс с переменной типа Marker (для карты Google Maps). public static class MyClass { int id; Marker marker; } подробнее

Показать сообщение отдельно
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
17.11.2014, 10:55  [ТС]     ListView, База данных и SimpleCursorAdapter - onItemClick срабатывает только после добавления данных
Та самая активити, которая не хочет работать... SaveCode

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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
public class SaveCode extends Activity implements OnClickListener {
    public final static String CODES = "piton.ru.servicecall.CODES";
    public final static String NAMES = "piton.ru.servicecall.NAMES";
 
    public static final String APP_PREFERENCES_NAME = "Name";
    public static final String APP_PREFERENCES_CODE = "Cd";
    SharedPreferences svPref;
 
    private static final int CM_DELETE_ID = 1;
    
    DB db;
    SimpleCursorAdapter scAdapter;
    Cursor cursor;
    ListView listV;
 
    EditText nameOper, codOper;
    Button btnSaveKod, btnDl;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.savekod);
 
        // открываем подключение к БД
        db = new DB(this);
        db.open();
        // получаем курсор
        cursor = db.getAllData();
        startManagingCursor(cursor);
        // формируем столбцы сопоставления
        String[] from = new String[]{"txt", "tel"};
        int[] to = new int[]{R.id.nameOpr, R.id.codOpr};
        scAdapter = new SimpleCursorAdapter(this, R.layout.cod_item, cursor, from, to);
        listV = (ListView) findViewById(R.id.listV);
        listV.setAdapter(scAdapter);
 
        registerForContextMenu(listV);
 
        btnSaveKod = (Button) findViewById(R.id.btnSaveKod);
        btnDl = (Button) findViewById(R.id.btnDl);
        nameOper = (EditText) findViewById(R.id.nameOper);
        codOper = (EditText) findViewById(R.id.codOper);
 
        btnSaveKod.setOnClickListener(this);
        btnDl.setOnClickListener(this);
 
        loadText();
      
    }
 
    @Override
    public void onClick(View v) {
        String name = nameOper.getText().toString();
        String tel = codOper.getText().toString();
 
        switch (v.getId()) {
            case R.id.btnSaveKod:
                db.addRec(name, tel);
                // обновляем курсор              
                cursor.requery();
 
                Toast.makeText(getApplicationContext(), "Добавлено: " + nameOper.getText().toString()
                                + " " + codOper.getText().toString(),
                        Toast.LENGTH_SHORT).show();
                break;
 
            case R.id.btnDl:
                db.deleteAll();
                cursor.requery();
 
                Toast.makeText(getApplicationContext(), "Список очищен",
                        Toast.LENGTH_SHORT).show();
                break;
        }
 
    listV.setOnItemClickListener(new AdapterView.OnItemClickListener() // Вот работает, но только после добавления записи в базу
    {
 
        @Override
        public void onItemClick (AdapterView <?> parent, View itemClicked,
        int position, long id) {
 
            TextView tv1 = (TextView) itemClicked.findViewById(R.id.nameOpr);
            TextView tv2 = (TextView) itemClicked.findViewById(R.id.codOpr);
            String nameO = tv1.getText().toString();
            String codO = tv2.getText().toString();
            String namecod = nameO + " " + codO;
 
            Intent saveCodIntent = new Intent();
            saveCodIntent.putExtra(NAMES, tv1.getText().toString());
            saveCodIntent.putExtra(CODES, tv2.getText().toString());
            setResult(RESULT_OK, saveCodIntent);
 
            scAdapter.changeCursor(cursor);
            scAdapter.notifyDataSetChanged();
            cursor.requery();
 
            finish();
 
            Toast.makeText(getApplicationContext(), namecod,
                    Toast.LENGTH_SHORT).show();
        }
      });
    }
 
 
        void saveText() {
        svPref = getSharedPreferences("MyCode", MODE_PRIVATE);
        SharedPreferences.Editor ed = svPref.edit();
        ed.putString(APP_PREFERENCES_NAME, nameOper.getText().toString());
        ed.putString(APP_PREFERENCES_CODE, codOper.getText().toString());
        ed.commit();
        Toast.makeText(this, "Cохранено", Toast.LENGTH_SHORT).show();
    }
 
    void loadText() {
        svPref = getSharedPreferences("MyCode", MODE_PRIVATE);
        String Nickname = svPref.getString(APP_PREFERENCES_NAME, "");
        String Code = svPref.getString(APP_PREFERENCES_CODE, "");
        nameOper.setText(Nickname);
        codOper.setText(Code);
        Toast.makeText(this, "Код загружен", Toast.LENGTH_SHORT).show();
    }
 
    @Override
    protected void onPause() {
        saveText();
        super.onPause();
    }
 
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.add(0, CM_DELETE_ID, 0, "Удалить запись");
    }
 
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        if (item.getItemId() == CM_DELETE_ID) {
            // получаем инфу о пункте списка
            AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item.getMenuInfo();
            db.delRec(acmi.id);
            cursor.requery();
            return true;
        }
        return super.onContextItemSelected(item);
    }
 
}
Добавлено через 35 секунд
Это класс БД

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
public class DB {
 
    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_TXT = "txt";
    public static final String COLUMN_COD = "tel";
 
    private static final String DB_CREATE =
            "create table " + DB_TABLE + "(" +
                    COLUMN_ID + " integer primary key autoincrement, " +
                    COLUMN_TXT + " text, " +
                    COLUMN_COD + " text" +
                    ");";
 
    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, String tel) {
        ContentValues cv = new ContentValues();
        cv.put(COLUMN_TXT, txt);
        cv.put(COLUMN_COD, tel);
        mDB.insert(DB_TABLE, null, cv);
    }
 
    // удалить запись из DB_TABLE
    public void delRec(long id) {
        mDB.delete(DB_TABLE, COLUMN_ID + " = " + id, null);
    }
    // удалить все записи из DB_TABLE
    public void deleteAll() {
        mDB.delete(DB_TABLE, null, 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 < 5; i++) {
                cv.put(COLUMN_TXT, "sometext " + i);
                cv.put(COLUMN_COD, "sometext " + i);
                db.insert(DB_TABLE, null, cv);
            }
        }
 
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        }
    }
}
 
Текущее время: 05:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru