ListView: обновление данных через EditText
ListView: обновление данных через EditText
Кто-нибудь сталкивался с реализацией обновления данных через EditText построчно?
К примеру, вешать OnFocusChangeListener на EditText. Как только фокус поменялся, обновить данные предыдущей строки.
Я использую кастомный CursorAdapter.
Поиск в сети нормальных примеров не дал.
Это вообще возможно?
К примеру, вешать OnFocusChangeListener на EditText. Как только фокус поменялся, обновить данные предыдущей строки.
Я использую кастомный CursorAdapter.
Поиск в сети нормальных примеров не дал.
Это вообще возможно?
Re: ListView: обновление данных через EditText
Не проще ли реализовать метод(void) в котором на входе будет Стринг и Инт, в конце вызвать notifyDataSetChanged(), инт - это номер айтема листвью в котором нужно обновить текст, ну и стринг - это сам текст???
CEO of a company R.id.team
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: ListView: обновление данных через EditText
Это возможно но не нужно.Idol писал(а):Это вообще возможно?
Когда-то тоже пытался сделать подобное, но потом понял, что вызывать диалог по клику на строке более правильное решение.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: ListView: обновление данных через EditText
возможно, но UI должен быть очевидным для пользователя, а это будет сильно большой сюрприз для него, если допустим он что-то внес туда просто так, попробовать.Idol писал(а):Кто-нибудь сталкивался с реализацией обновления данных через EditText построчно?
К примеру, вешать OnFocusChangeListener на EditText. Как только фокус поменялся, обновить данные предыдущей строки.
Я использую кастомный CursorAdapter.
Поиск в сети нормальных примеров не дал.
Это вообще возможно?
Добавление данных по клику на строке??KamiSempai писал(а):Это возможно но не нужно.Idol писал(а):Это вообще возможно?
Когда-то тоже пытался сделать подобное, но потом понял, что вызывать диалог по клику на строке более правильное решение.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: ListView: обновление данных через EditText
Разве вопрос был про добавление? Я имел ввиду корректировку.Foenix писал(а):Добавление данных по клику на строке??
PS: Кстати, добавление данных по клику на строке очень даже удобное решение, если эта строка футер)
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: ListView: обновление данных через EditText
а, точно, понятно.
Покажи какой-нибудь скрин с футером, по которому добавляют.
Покажи какой-нибудь скрин с футером, по которому добавляют.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: ListView: обновление данных через EditText
Dolphin Browser 2 скрин.Foenix писал(а):Покажи какой-нибудь скрин с футером, по которому добавляют.
Opera Mobile Classic 1 скрин.
Вот еще одна неплохая программа
Так-же можно и хедер использовать.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: ListView: обновление данных через EditText
Кроме как у тебя (похожа на обычную кнопку) не увидела добавлений на футере.
У дельфина - это плюсик В РЯДУ картинок.
У оперы тоже просто кнопка..
ну кнопки внизу и собственную панельку кнопок внизу или вверху - многие делают. Я думала, там что-то более интересное придумано.
У дельфина - это плюсик В РЯДУ картинок.
У оперы тоже просто кнопка..
ну кнопки внизу и собственную панельку кнопок внизу или вверху - многие делают. Я думала, там что-то более интересное придумано.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: ListView: обновление данных через EditText
Суть не только в нужно-не нужно, а скорее возможно-не возможно. Меня пока интересует больше техническая сторона дела.KamiSempai писал(а):Это возможно но не нужно.Idol писал(а):Это вообще возможно?
Когда-то тоже пытался сделать подобное, но потом понял, что вызывать диалог по клику на строке более правильное решение.
Раз вы делали подобное, надеюсь вам не составит труда найти, где я сделал не так.
row xml:
Код: Выделить всё
<?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="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/textName"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="left|center_vertical"
android:layout_marginLeft="5dip"
android:layout_weight="10"
android:ellipsize="end"
android:gravity="left|center_vertical"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/set_group_loop_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2.5"
android:ems="10"
android:gravity="center"
android:inputType="number"
android:textAppearance="?android:attr/textAppearanceLarge" >
</EditText>
<TextView
android:id="@+id/textTime"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="right|center_vertical"
android:layout_marginRight="5dip"
android:layout_weight="5"
android:gravity="right|center_vertical"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>Код: Выделить всё
public void bindView(View paramView, final Context paramContext, final Cursor paramCursor) {
final TextView list_item_name = (TextView)paramView.findViewById(R.id.textName);
list_item_name.setText(paramCursor.getString(paramCursor.getColumnIndex(setColumns.SET_NAME)));
final EditText list_item_loop = (EditText)paramView.findViewById(R.id.set_group_loop_title);
list_item_loop.setText(paramCursor.getString(paramCursor.getColumnIndex(drillsetColumns.DRILLSET_LOOP_N)));
// list_item_loop.addTextChangedListener(new TextWatcher() {
//
// public void afterTextChanged(Editable s) {
// String strValue = list_item_loop.getText().toString();
// String strValue2 = list_item_name.getText().toString();
// Log.d(TAG, "EDIT after: User set EditText value to " + strValue + " - " + strValue2);
//
// }
//
// public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
//
// public void onTextChanged(CharSequence s, int start, int before, int count) {
//// String strValue = list_item_loop.getText().toString();
//// Log.d(TAG, "EDIT on: User set EditText value to " + strValue + " - " + list_item_name);
// }
// });
final String old_loopN = paramCursor.getString(paramCursor.getColumnIndex(drillsetColumns.DRILLSET_LOOP_N));
final int current_id = Integer.valueOf(paramCursor.getString(paramCursor.getColumnIndex(drillsetColumns._ID)));
Log.d(TAG, "old_loopN - " + old_loopN+ " - " + current_id);
list_item_loop.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
String strValue = list_item_loop.getText().toString();
String strValue2 = list_item_name.getText().toString();
Log.d(TAG, "FOCUS: User set EditText value to " + strValue + " - " + strValue2);
LinearLayout parent = (LinearLayout) v.getParent();
EditText qtyTemp = (EditText) parent.findViewById(R.id.set_group_loop_title);
String strValue11 = qtyTemp.getText().toString();
String strValue13 = Integer.toString(qtyTemp.getId());
Log.d(TAG, "FOCUS2: User set EditText value to " + strValue11 + " - " + strValue13);
int id = Integer.valueOf(paramCursor.getString(paramCursor.getColumnIndex(drillsetColumns._ID)));
if (old_loopN != strValue) {
Log.d(TAG, "UPDATED: " + strValue + " - " + id);
ContentValues localContentValues = new ContentValues();
localContentValues.put(drillsetColumns.DRILLSET_LOOP_N, strValue);
Uri drillUri = ContentUris.withAppendedId(drillsetColumns.CONTENT_URI, id);
paramContext.getContentResolver().update(drillUri, localContentValues, null, null);
}
}
}
});2) Кроме того id элемента выбирается не правильно. Не могу понять почему.
Пример, список открылся и потом щелчек по второму элементу (id=55):
Код: Выделить всё
:30:27.245: old_loopN - 3 - 56
:30:27.265: old_loopN - 2 - 55
:30:27.295: old_loopN - 2 - 58
:30:27.315: old_loopN - 2 - 57
:30:27.337: old_loopN - 3 - 53
:30:27.355: old_loopN - 3 - 54
:31:07.356: FOCUS: User set EditText value to 2 - test 1
:31:07.356: FOCUS2: User set EditText value to 2 - 2131296271
:31:07.356: UPDATED: 2 - 54
:31:07.516: drillset_id: 54
:31:07.656: FOCUS: User set EditText value to 2 - test 1
:31:07.656: FOCUS2: User set EditText value to 2 - 2131296271
:31:07.656: UPDATED: 2 - 56
:31:08.106: drillset_id: 56
:31:08.156: old_loopN - 3 - 56
:31:08.166: old_loopN - 2 - 55
:31:08.176: old_loopN - 2 - 58
:31:08.196: old_loopN - 2 - 57
:31:08.216: old_loopN - 3 - 53
:31:08.286: old_loopN - 2 - 54
:31:08.536: old_loopN - 2 - 56
:31:08.557: old_loopN - 2 - 55
:31:08.606: old_loopN - 2 - 58
:31:08.676: old_loopN - 2 - 57
:31:08.706: old_loopN - 3 - 53
:31:08.706: old_loopN - 2 - 54
Re: ListView: обновление данных через EditText
Ну когда наверху написано "Edit Name" и существует лишь одно поле для редактирования. Я думаю, что даже ёжику будет понятно для чего этоFoenix писал(а):возможно, но UI должен быть очевидным для пользователя, а это будет сильно большой сюрприз для него, если допустим он что-то внес туда просто так, попробовать.
В моем случае, двухсмысленности нет. Да и с технической стороны это правильнее, когда данные одной таблицы правяться в одной активити, а данные другой в другой активити. Проще потом что-либо менять.
Я в любом случае буду делать редактирование set через диалог по длинному клику.
Re: ListView: обновление данных через EditText
id выбирается неправильно возможно потому, что перед тем, как это id доставать нужно сделать курсору Cursor.moveToPosition(position);
потому что пока вы по listview кликаете, позиция текущей записи на курсоре может быть где угодно..
потому что пока вы по listview кликаете, позиция текущей записи на курсоре может быть где угодно..
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: ListView: обновление данных через EditText
Тут я не до конца понимаю, как я должен получить позицию курсора (position)?Foenix писал(а):id выбирается неправильно возможно потому, что перед тем, как это id доставать нужно сделать курсору Cursor.moveToPosition(position);
потому что пока вы по listview кликаете, позиция текущей записи на курсоре может быть где угодно..
Re: ListView: обновление данных через EditText
Как насчет этого объяснения?
Или вы считаете, что это не работает когда вызывается onFocusChange?public abstract void bindView (View view, Context context, Cursor cursor)
Added in API level 1
Bind an existing view to the data pointed to by cursor
Parameters
view Existing view, returned earlier by newView
context Interface to application's global information
cursor The cursor from which to get the data. The cursor is already moved to the correct position.
Re: ListView: обновление данных через EditText
Похоже данное направление тупиковое, но не из-за интерфейсных изысков, а из-за бага в Андроид.
Невозможно одновременно иметь EditText в элементе списка и повесить клик на оставшуюся часть элемента.
И похоже Гугл и не собирается это фиксить, потому что - This is working as intended to support trackball/dpad navigation.
На мой взгляд полная чушь и отвратительное проектирование.
Невозможно одновременно иметь EditText в элементе списка и повесить клик на оставшуюся часть элемента.
И похоже Гугл и не собирается это фиксить, потому что - This is working as intended to support trackball/dpad navigation.
На мой взгляд полная чушь и отвратительное проектирование.