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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
#1

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

16.11.2014, 22:02. Просмотров 1486. Ответов 14
Метки нет (Все метки)

Здравствуйте!
Подскажите, плиз, решение проблемы новичку...
есть БД... подключаюсь через SimpleCursorAdapter ...
Нажатие на строке ListView срабатывает только после добавления данных в базу (обрабатывается возврат в MainActivity)...
если просто перейти в активность - нажатие не обрабатывается... (((
В чем может быть проблема??
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2014, 22:02     ListView, База данных и SimpleCursorAdapter - onItemClick срабатывает только после добавления данных
Посмотрите здесь:

Прикрутить RadioGroup к ListView(SimpleCursorAdapter) Android
Android Android, ListView, база данных SQLite
Android ListView после загрузки данных подсветить 1-ый элемент
Получение данных с SimpleCursorAdapter Android
SimpleCursorAdapter(ListView заполняется данными только после прокрутки скрола) Android
Добавление данных в ListView Android
После добавления второго класса БД срабатывает исключение. Source not found Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,069
17.11.2014, 07:55     ListView, База данных и SimpleCursorAdapter - onItemClick срабатывает только после добавления данных #2
Что значит "после добавления данных в базу"? Каким образом и кто их добавляет?
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
17.11.2014, 08:44  [ТС]     ListView, База данных и SimpleCursorAdapter - onItemClick срабатывает только после добавления данных #3
Пользователь добавляет... кнопкой... с двух Edit- ов...

Добавлено через 1 минуту
База простенькая - локальная
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,069
17.11.2014, 09:07     ListView, База данных и SimpleCursorAdapter - onItemClick срабатывает только после добавления данных #4
Я сталкивался с описанной проблемой при изменении параметров лаяута, у вас там ничего не меняется программно?
Ну и после добавления обновляете ли адаптер методами?
Java
1
2
myAdapter.changeCursor(cursor); 
myAdapter.notifyDataSetChanged();
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
17.11.2014, 10:53  [ТС]     ListView, База данных и SimpleCursorAdapter - onItemClick срабатывает только после добавления данных #5
Нет, вроде... там ничего не меняется...
пробовал обновлять - пофиг... (

Добавлено через 1 минуту
Приду домой - закину сюда коды... может,, конечно, я где-то что-то прозявал...

Добавлено через 1 час 34 минуты
Вот творчество...

MainActivity:

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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
...
 
public class MainActivity extends Activity implements OnClickListener {
 
    static final int PICK_CONTACT_REQUEST = 1;[LIST=1][/LIST]    static final int REQUEST_CODE =2;
 
    SharedPreferences sPref;
 
    public static final String APP_PREFERENCES_NAME = "Nickname";
    public static final String APP_PREFERENCES_NUMBER = "Number";
    public static final String APP_PREFERENCES_CODE = "Code";
    public static final String APP_PREFERENCES_OPER = "Oper";
 
    EditText editText, edText, etName;
    Button btnName, btnCalls, btnBmj, btnSaveCall, btnCode;
    CheckBox checkBox;
    TextView tvNameOper;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        tvNameOper = (TextView) findViewById(R.id.tvNameOper);
 
        btnName = (Button) findViewById(R.id.btnName);
        btnBmj = (Button) findViewById(R.id.btnBmj);
        btnCalls = (Button) findViewById(R.id.btnCalls);
        btnSaveCall = (Button) findViewById(R.id.btnSaveCall);
        btnCode = (Button) findViewById(R.id.btnCode);
 
        editText = (EditText) findViewById(R.id.editText);
        edText = (EditText) findViewById(R.id.edText);
        etName = (EditText) findViewById(R.id.etName);
 
        checkBox = (CheckBox) findViewById(R.id.checkBox);
 
        btnName.setOnClickListener(this);
        btnCalls.setOnClickListener(this);
        btnBmj.setOnClickListener(this);
        btnSaveCall.setOnClickListener(this);
        btnCode.setOnClickListener(this);
 
        editText.setOnClickListener(this);
        edText.setOnClickListener(this);
 
        checkBox.setOnClickListener(this);
 
        loadText();
    }
 
    @Override
    public void onClick(View v) {
        if (checkBox.isChecked()) {
            edText.setEnabled(true);
            edText.isFocusable();
            edText.selectAll();
            int textLength = edText.getText().length();
            edText.setSelection(textLength, textLength);
        } else {
            edText.setEnabled(false);
        }
        switch (v.getId()) {
            case R.id.btnName:
                Intent pickContactIntent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts"));
                pickContactIntent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
                startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST);
                break;
 
            case R.id.btnCalls:
                String[] strFields = {CallLog.Calls.NUMBER, CallLog.Calls.CACHED_NAME};
                String strOrder = CallLog.Calls.DATE + " DESC";
                Cursor mCallCursor = getContentResolver()
                        .query(CallLog.Calls.CONTENT_URI, strFields, null, null, strOrder);
                if (mCallCursor != null && mCallCursor.moveToFirst()) {
                    int columns = mCallCursor.getColumnIndex(CallLog.Calls.NUMBER);
                    String numbers = mCallCursor.getString(columns).replaceAll(" ", "").trim();
                    int sip = mCallCursor.getColumnIndex(CallLog.Calls.CACHED_NAME);
                    String name = mCallCursor.getString(sip);
 
                    if (numbers.length() == 13)
                        editText.setText(edText.getText() + numbers.substring(3));
                    else
                        editText.setText(edText.getText() + numbers);
                    etName.setText(name);
                }
                break;
 
            case R.id.btnBmj:
                String encodedHash = Uri.encode("#");
               // String encodedPlus = Uri.encode("+");
                String ussd = editText.getText() + encodedHash;
                startActivityForResult(new Intent("android.intent.action.DIAL",
                        Uri.parse("tel:" + ussd)), 1);
 
                break;
 
            case R.id.btnSaveCall:
                Intent saveCallIntent = new Intent(this, CallsSave.class);
                saveCallIntent.putExtra("name", etName.getText().toString());
                saveCallIntent.putExtra("number", editText.getText().toString());
                startActivity(saveCallIntent);
                break;
            case R.id.btnCode:
                Intent saveCode = new Intent(this, SaveCode.class); // Вот этот Intent  отправляет в ту активити, в которой ListView не работает
 
                startActivityForResult(saveCode, REQUEST_CODE);
                break;
        }
    }
 
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK) {
            switch (requestCode) {
                case PICK_CONTACT_REQUEST:
 
                    if (requestCode == PICK_CONTACT_REQUEST) {
                        Uri contactUri = data.getData();
                        String[] projection = {ContactsContract.CommonDataKinds.Phone.NUMBER,
                                ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME};
                        Cursor cursor = getContentResolver()
                                .query(contactUri, projection, null, null, null);
                        cursor.moveToFirst();
                        int column = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
                        String number = cursor.getString(column).replaceAll(" ", "").
                                replaceAll("-", "").replaceAll(",", " ").replaceAll("[)]", "").replaceAll("[(]", "").trim();
                        int sip = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
                        String name = cursor.getString(sip);
 
                        if (number.length() == 13)
                            editText.setText(edText.getText() + number.substring(3));
                        if (number.length() == 12)
                            editText.setText(edText.getText() + number.substring(2));
                        if (number.length() == 11)
                            editText.setText(edText.getText() + number.substring(1));
                        if (number.length() == 10)
                            editText.setText(edText.getText() + number);
                        if (number.length() < 10)
                            editText.setText("НЕПРАВИЛЬНО НАБРАН НОМЕР!");
                        if (number.length() > 13)
                            editText.setText("НЕПРАВИЛЬНО НАБРАН НОМЕР!");
 
                        etName.setText(name);
                        break;
                    }
                case REQUEST_CODE:   // тут принимаем ответ....
                      if (data == null) {
                         return;
                       }
                    if (requestCode == REQUEST_CODE) {   
                       String cods = data.getStringExtra(SaveCode.CODES);
                       String names = data.getStringExtra(SaveCode.NAMES);
                       tvNameOper.setText(names);
                       edText.setText(cods);
 
                             } else {
                      break;
                    }
            }
        }
    }
    void saveText() {
        sPref = getSharedPreferences("MyPref", MODE_PRIVATE);
        SharedPreferences.Editor ed = sPref.edit();
        ed.putString(APP_PREFERENCES_NAME, editText.getText().toString());
        ed.putString(APP_PREFERENCES_NUMBER, edText.getText().toString());
        ed.putString(APP_PREFERENCES_CODE, etName.getText().toString());
        ed.putString(APP_PREFERENCES_OPER, tvNameOper.getText().toString());
        ed.commit();
        Toast.makeText(this, "Cохранено", Toast.LENGTH_SHORT).show();
    }
    void loadText() {
        sPref = getSharedPreferences("MyPref", MODE_PRIVATE);
        String Nickname = sPref.getString(APP_PREFERENCES_NAME, "");
        String Number = sPref.getString(APP_PREFERENCES_NUMBER, "");
        String Code = sPref.getString(APP_PREFERENCES_CODE, "");
        String Oper = sPref.getString(APP_PREFERENCES_OPER, "");
        editText.setText(Nickname);
        edText.setText(Number);
        etName.setText(Code);
        tvNameOper.setText(Oper);
        Toast.makeText(this, "Номер загружен", Toast.LENGTH_SHORT).show();
    }
    @Override
    protected void onPause() {
        saveText();
        super.onPause();
    }
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
17.11.2014, 10:55  [ТС]     ListView, База данных и SimpleCursorAdapter - onItemClick срабатывает только после добавления данных #6
Та самая активити, которая не хочет работать... 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) {
        }
    }
}
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
17.11.2014, 10:55  [ТС]     ListView, База данных и SimpleCursorAdapter - onItemClick срабатывает только после добавления данных #7
Главный экран


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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
 
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        tools:context=".MainActivity"
        android:weightSum="1">
 
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
 
            <Button
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:text="Отправить БОМЖика"
                android:id="@+id/btnBmj"
                android:layout_marginTop="@dimen/activity_vertical_margin"
                android:textStyle="bold"
                android:textSize="@dimen/activity_horizontal_margin"
                android:background="@android:drawable/btn_default" />
        </LinearLayout>
 
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:weightSum="1"
            android:baselineAligned="false">
 
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/tvNameOper"
                android:background="@android:drawable/dialog_holo_light_frame"
                android:textSize="20dp"
                android:layout_weight="1.16"
                android:autoText="false"
                android:gravity="center"
                android:hint="Оператор"
                android:textStyle="bold" />
 
            <EditText
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/edText"
                android:text="*104*"
                android:textColor="#ffff2413"
                android:textStyle="bold"
                android:editable="true"
                android:clickable="false"
                android:background="@android:drawable/editbox_background_normal"
                android:enabled="false"
                android:focusable="true"
                android:inputType="phone"
                android:textSize="14dp" />
 
            <CheckBox
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Ред.код"
                android:id="@+id/checkBox"
                android:onClick="onCheckboxClicked"
                android:background="@android:drawable/editbox_background_normal"
                android:textStyle="bold"
                android:textSize="10dp" />
 
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Коды"
                android:id="@+id/btnCode"
                android:background="@android:drawable/btn_default" />
 
        </LinearLayout>
 
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
 
            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="textPersonName"
                android:ems="10"
                android:id="@+id/etName"
                android:gravity="center"
                android:hint="Имя"
                android:background="@android:drawable/dialog_holo_light_frame"
                android:clickable="false"
                android:editable="false"
                android:focusable="false"
                android:focusableInTouchMode="false"
                android:textSize="30dp" />
        </LinearLayout>
 
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
 
            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="phone|textUri"
                android:text=""
                android:ems="10"
                android:id="@+id/editText"
                android:editable="true"
                android:enabled="true"
                android:linksClickable="true"
                android:longClickable="true"
                android:clickable="true"
                android:textAlignment="center"
                android:textColor="#eb1e2fff"
                android:typeface="serif"
                android:focusable="true"
                android:hint="Код"
                android:gravity="center"
                android:background="@android:drawable/editbox_dropdown_light_frame"
                android:textStyle="bold">
            </EditText>
        </LinearLayout>
 
 
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
 
            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Выбрать номер телефона"
                android:id="@+id/textView"
                android:textStyle="bold"
                android:textAlignment="center"
                android:gravity="center"
                android:background="@android:drawable/editbox_background_normal"
                android:textSize="20dp" />
        </LinearLayout>
 
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:weightSum="1">
 
            <Button
                android:id="@+id/btnName"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Из контактов"
                android:textStyle="bold"
                android:background="@android:drawable/btn_default_small"
                android:layout_weight="0.78">
            </Button>
 
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Из журнала вызовов"
                android:id="@+id/btnCalls"
                android:textStyle="bold"
                android:background="@android:drawable/btn_default" />
 
        </LinearLayout>
 
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal">
 
            <Button
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Сохранить/История"
                android:id="@+id/btnSaveCall"
                android:background="@android:drawable/btn_default_small" />
        </LinearLayout>
 
 
    </LinearLayout>
 
</RelativeLayout>
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
17.11.2014, 11:31  [ТС]     ListView, База данных и SimpleCursorAdapter - onItemClick срабатывает только после добавления данных #8
Второй экран..

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
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".SaveCode">
 
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/linearLayout4">
 
        <TextView
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Коды операторов"
            android:id="@+id/tvKod"
            android:textSize="20dp"
            android:textStyle="bold"
            android:gravity="center"
            android:background="@android:drawable/gallery_thumb" />
 
    </LinearLayout>
 
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/linearLayout4"
        android:layout_centerHorizontal="true"
        android:id="@+id/linearLayout3">
 
        <EditText
 
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:id="@+id/nameOper"
            android:layout_weight="0.78"
            android:background="@android:drawable/editbox_background_normal"
            android:singleLine="false"
            android:hint="Оператор"
            android:gravity="center" />
 
        <EditText
 
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:id="@+id/codOper"
            android:layout_weight="0.38"
            android:background="@android:drawable/editbox_background_normal"
            android:gravity="center"
            android:hint="Код"
            android:inputType="phone" />
    </LinearLayout>
 
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/linearLayout3"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:id="@+id/linearLayout5">
 
        <Button
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Добавить код"
            android:id="@+id/btnSaveKod"
            android:layout_below="@+id/linearLayout3"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:background="@android:drawable/btn_default"
            android:textStyle="bold" />
    </LinearLayout>
 
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"></LinearLayout>
 
    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/listV"
        android:layout_below="@+id/linearLayout5"
        android:layout_above="@+id/btnDl" />
 
    <Button
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Очистить все"
        android:id="@+id/btnDl"
        android:background="@android:drawable/btn_default"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />
 
</RelativeLayout>
И - Разметка для ListView

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <TextView
        android:id="@+id/nameOpr"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20dp"
        android:textStyle="bold"
        android:text="TextView"/>
 
    <TextView
        android:id="@+id/codOpr"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="14dp"
        android:textStyle="italic"
        android:text="TextView" />
 
</LinearLayout>
Добавлено через 35 минут
Цитата Сообщение от Rube Посмотреть сообщение
Ну и после добавления обновляете ли адаптер методами?
Так, именно после добавления записи - срабатывает клик, а при переходе в активити - нет, хотя все данные в листе есть... (((
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,069
17.11.2014, 13:22     ListView, База данных и SimpleCursorAdapter - onItemClick срабатывает только после добавления данных #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Прошерстил ваш код, слушатель listV.setOnItemClickListener вставьте в метод onCreate и все заработает.
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
17.11.2014, 13:46  [ТС]     ListView, База данных и SimpleCursorAdapter - onItemClick срабатывает только после добавления данных #10
Цитата Сообщение от Rube Посмотреть сообщение
Прошерстил ваш код, слушатель listV.setOnItemClickListener вставьте в метод onCreate и все заработает.
СПАСИБО ОГРОМНОЕ!! ))) Все заработало!!! Вам - плюс!!! )))

Добавлено через 3 минуты
Можно еще пару вопросиков по этому проекту? )
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,069
17.11.2014, 13:50     ListView, База данных и SimpleCursorAdapter - onItemClick срабатывает только после добавления данных #11
Можно, пока пример я у себя не удалил.
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
17.11.2014, 14:07  [ТС]     ListView, База данных и SimpleCursorAdapter - onItemClick срабатывает только после добавления данных #12
Спасибочки! )
1. Как сделать, чтобы при старте второго активити поля-Эдиты оставались доступными для ввода, а клавиатура не выскакивала сразу, а толтко при нажатии на поле?
2. Могу ли я с этим же классом DB создать еще таблицу и вносить в нее данные с третьей активити (данные не связанные с первой таблицей), или нужно создать другой клас для БД для работы с друой активити и таблицей?
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,069
17.11.2014, 15:06     ListView, База данных и SimpleCursorAdapter - onItemClick срабатывает только после добавления данных #13
1. Ну это легко нагуглить, я с клавой пока не работал.
2. Конечно можно, почему нет? БД у Вас одна, в ней некоторое кол-во таблиц. Создавайте их также как и первую.
3. Кнопка при выскакивании клавиатуры также поднимается. Исправьте.
androbro
318 / 278 / 54
Регистрация: 17.10.2014
Сообщений: 825
18.11.2014, 08:56     ListView, База данных и SimpleCursorAdapter - onItemClick срабатывает только после добавления данных #14
Seivan, по поводу клавиатуры могу подсказать способ который мне лично помог.
В манифесте для вашей активити пропишите(выделено жирным):
<activity
...
...
android:windowSoftInputMode="stateHidden" >
</activity>
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2014, 10:33     ListView, База данных и SimpleCursorAdapter - onItemClick срабатывает только после добавления данных
Еще ссылки по теме:

Переход на новое activity с элемента listView, заполненного через SimpleCursorAdapter Android
Вывод из базы данных в ListView через SimpleCursorAdapter Android
Android Обновление ListView после добавления записи
Возврат данных с сервера. Не срабатывает условие Android
Android Recyclerview при onLongItemClick срабатывает и onItemClick?

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

Или воспользуйтесь поиском по форуму:
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
18.11.2014, 10:33  [ТС]     ListView, База данных и SimpleCursorAdapter - onItemClick срабатывает только после добавления данных #15
Спасибо всем большое !
Цитата Сообщение от Rube Посмотреть сообщение
3. Кнопка при выскакивании клавиатуры также поднимается. Исправьте.
Исправил... и клаву тоже ))
Займусь второй таблицей... Даст Бог - получится ))

Добавлено через 3 минуты
Цитата Сообщение от androbro Посмотреть сообщение
Seivan, по поводу клавиатуры могу подсказать способ который мне лично помог.
В манифесте для вашей активити пропишите(выделено жирным):
<activity
...
...
android:windowSoftInputMode="stateHidden" >
</activity>
Нашел такое решение

android:windowSoftInputMode="adjustPan"

И клавиатура не вылазит сразу и кнопка с ней не лезет на экран... )

Добавлено через 10 минут
А кто-нибудь подскажет по вот этому моему вопросу:
Выбор телефона из журнала вызовов

Или журнал нельзя вызвать так, как контакты, и его можно только в листвью загружать, чтобы потом обработать копирование??
Yandex
Объявления
18.11.2014, 10:33     ListView, База данных и SimpleCursorAdapter - onItemClick срабатывает только после добавления данных
Ответ Создать тему
Опции темы

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