Урок 54. Кастомизация списка. Создаем свой адаптер
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
Здравствуйте. Раньше для заполнения ListView использовал SimpleCursorAdapter. Отдельно запускал Service, он заполнял мою базу и изменения сразу появлялись в ListView. Потом необходимо было изменить представление записей в ListView написал MyNotesListCursorAdapter extends SimpleCursorAdapter. Теперь данные выводятся , но не обновляются при работе сервиса. Подскажите, как правильно сделать обновление. Пытался прикрутить LoaderCallbacks<Cursor>, но не знаю, как сделать, чтобы он срабатывал после работы сервиса.
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
Как раз по этому уроку и делал. Но после работы сервиса, который добавил записи в БД, ListView все равно не изменяется.
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
значит неправильно реализован контент-провайдер.
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: Урок 54. Кастомизация списка. Создаем свой адаптер
Сорри за офф-топ, по этому примеру как в уроке 136 CursorLoader - он самостоятельно следит за изменениями в БД и в случаи изменения обновляет курсор, или только самому вызывать через getSupportLoaderManager().getLoader(0).forceLoad(); ?
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
нет, самостоятельно вызывать эту штуку не нужно. нужно правильно огранизовать контент-провайдер и курсор-лоадер.
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: Урок 54. Кастомизация списка. Создаем свой адаптер
Спасибо, сейчас будем детальнее разбирать эту тему.Foenix писал(а):нет, самостоятельно вызывать эту штуку не нужно. нужно правильно огранизовать контент-провайдер и курсор-лоадер.
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
Foenix, все правильно. Ошибку допустил с курсор-лоадере. Все заработало как нужно. Спасибо
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
пожалуйста
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: Урок 54. Кастомизация списка. Создаем свой адаптер
а как сделать так что бы у каждого товара была своя картинка?
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
Как сделать, что бы цена была привязана но не отображалась в Listwiev
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
листвью это средство показа данных, самим данным от этого не тепло и не холодно. Не хочешь - не показывай.farads писал(а):Как сделать, что бы цена была привязана но не отображалась в Listwiev
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: Урок 54. Кастомизация списка. Создаем свой адаптер
Можно пример или как это реализовать.Foenix писал(а):листвью это средство показа данных, самим данным от этого не тепло и не холодно. Не хочешь - не показывай.farads писал(а):Как сделать, что бы цена была привязана но не отображалась в Listwiev
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
а тут уроки есть
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: Урок 54. Кастомизация списка. Создаем свой адаптер
Здравствуйте! Подскажите пожалуйста, сделал свой адаптер на примере урока, забирает данные из EditText, все работает нормально, пока фокус не будет снят с поля ввода значение не запишется, возможен вариант когда пользователь не завершил ввод и нажал корзина, то в таком случае последний ввод так и не завершится. Можно ли как-то принудительно переключить фокус, чтоб завершить ввод по нажатию кнопки корзина?
Заранее благодарен!
код моего адаптера
С медом TextWatcher подружится не получилось, данные возвращаются и прыгают по списку, заносятся в другие поля после скрола... разобраться не получилось.
вызов
сам класс
Заранее благодарен!
код моего адаптера
Код: Выделить всё
public class BoxAdapter extends BaseAdapter {
Context ctx;
LayoutInflater lInflater;
ArrayList<Product> objects;
BoxAdapter(Context context, ArrayList<Product> products) {
ctx = context;
objects = products;
lInflater = (LayoutInflater) ctx
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
// кол-во элементов
@Override
public int getCount() {
return objects.size();
}
// элемент по позиции
@Override
public Object getItem(int position) {
return objects.get(position);
}
// id по позиции
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// используем созданные, но не используемые view
View view = convertView;
ViewHolder holder;
Product p = getProduct(position);
if (view == null) {
holder = new ViewHolder();
view = lInflater.inflate(R.layout.item, null);
holder.name = (TextView) view.findViewById(R.id.tvDescr);
holder.price = (TextView) view.findViewById(R.id.tvPrice);
holder.image = (ImageView) view.findViewById(R.id.ivImage);
holder.number = (EditText) view.findViewById(R.id.etNumber);
view.setTag(holder);
}else{
holder = (ViewHolder) view.getTag();
}
holder.name.setText(objects.get(position).name + "");
holder.name.setId(position);
holder.price.setText(objects.get(position).price + "");
holder.price.setId(position);
holder.image.setImageResource(objects.get(position).image);
holder.image.setId(position);
holder.number.setText(objects.get(position).number + "");
holder.number.setId(position);
holder.number.setOnFocusChangeListener(Edit);
return view;
}
// товар по позиции
Product getProduct(int position) {
return ((Product) getItem(position));
}
// содержимое корзины
ArrayList<Product> getBox() {
ArrayList<Product> box = new ArrayList<Product>();
for (Product p : objects) {
if(!p.number.equals(""))
box.add(p);
}
return box;
}
class ViewHolder {
TextView name;
TextView price;
ImageView image;
EditText number;
}
OnFocusChangeListener Edit = new OnFocusChangeListener() {
public void onFocusChange(View v, boolean gainFocus) {
if (gainFocus) {
((View) v.getParent()).setBackgroundColor(Color.rgb(255, 248, 220));
}
else {
final int position = v.getId();
final EditText Caption = (EditText) v;
getProduct((Integer) position).number = Caption.getText().toString();
((View) v.getParent()).setBackgroundColor(Color.rgb(255, 255, 255));
}
}
};
}
С медом TextWatcher подружится не получилось, данные возвращаются и прыгают по списку, заносятся в другие поля после скрола... разобраться не получилось.
вызов
Код: Выделить всё
holder.number.addTextChangedListener(new MyTextWatcher(position));
Код: Выделить всё
class MyTextWatcher implements TextWatcher {
private int position;
public MyTextWatcher(int position) {
this.position = position;
}
public void afterTextChanged(Editable s) {
getProduct((Integer) position).number = s.toString();
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
}
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
надо сделать отдельный метод по обработке того, что у тебя там записывается и куда (т.е. то, что у тебя тут OnFocusChangeListener Edit = new OnFocusChangeListener() { )
затем просто сделать вызов этого метода в OnFocusChangeListener и в обработчик нажатия кнопки его прикрутить.
затем просто сделать вызов этого метода в OnFocusChangeListener и в обработчик нажатия кнопки его прикрутить.
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: Урок 54. Кастомизация списка. Создаем свой адаптер
Насколько понял, сделал.
вызов
класс
я видно не совсем понял Вашу идею.
выпадает со словами
java.lang.IllegalStateException: Could not execute method of the activity
По чему то я понимаю, но как сделать по другому нет.
Я хочу просто снять или перевести фокус. Передать все необходимые параметры из другого класса для нахождения необходимой вьюшки я честно говоря даже не представляю как.
вызов
Код: Выделить всё
holder.number.setOnFocusChangeListener(new MyFocus());
Код: Выделить всё
class MyFocus implements OnFocusChangeListener{
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
((View) v.getParent()).setBackgroundColor(Color.rgb(255, 248, 220));
} else {
// set the row background white
final int position = v.getId();
final EditText Caption = (EditText) v;
getProduct((Integer) position).number = Caption.getText().toString();
((View) v.getParent()).setBackgroundColor(Color.rgb(255, 255, 255));
}
}
public void unFocus(View v)
{
v.requestFocus();
}
}
Код: Выделить всё
public void showResult(View v) {
String result = "Товары в корзине:";
for (Product p : boxAdapter.getBox()) {
new MyFocus().unFocus(v);
if (!p.number.equals(""))
result += "\n" + p.number;
}
Toast.makeText(this, result, Toast.LENGTH_LONG).show();
}
выпадает со словами
java.lang.IllegalStateException: Could not execute method of the activity
По чему то я понимаю, но как сделать по другому нет.
Я хочу просто снять или перевести фокус. Передать все необходимые параметры из другого класса для нахождения необходимой вьюшки я честно говоря даже не представляю как.
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
ИЗвини, нету времени вообще смотреть код. Еще раз повторюсь. Берешь и делаешь у данной активити отдельный метод, который делает с гипотетической строкой то, что тебе нужно, а на вход принимает эту строку. А потом просто этот метод вызываешь там, где тебе нужно, передав туда нужные буквы (строку).
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: Урок 54. Кастомизация списка. Создаем свой адаптер
Сделал в классе адаптера такой метод
Все бы хорошо, но кнопка "забрать" срабатывает правильно по чему-то только со второго нажатия на кнопку, хотя видно как ListView меняет фокус
Код: Выделить всё
public void unFocus(){
this.notifyDataSetChanged();
}
Код: Выделить всё
public void showResult(View v) {
String result = "Товары в корзине:";
boxAdapter.unFocus();
for (Product p : boxAdapter.getBox()) {
if (!p.number.equals(""))
result += "\n" + p.number;
}
Toast.makeText(this, result, Toast.LENGTH_LONG).show();
}
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
я ж тебе сказала - в этот метод нужно строку целевую передавать и мурыжить ее, или что ты там с ней делаешь.
Может быть я, конечно, неправильно поняла твое первое сообщение?
метод должен быть вида
из других мест вызываем его
и аналогично по клику на кнопке вызываем тоже самое, тока юзаем .getText().toString() по названию твоей текстовой вьюшки
Может быть я, конечно, неправильно поняла твое первое сообщение?
метод должен быть вида
Код: Выделить всё
PRIVATE void AddStringToSomeWhere(String myData){
//Тут добавляем допустим строку в бд
}
Код: Выделить всё
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
((View) v.getParent()).setBackgroundColor(Color.rgb(255, 248, 220));
} else {
// set the row background white
final int position = v.getId();
final EditText Caption = (EditText) v;
AddStringToSomeWhere(Caption.getText().toString())
}
}
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