Страница 2 из 4
Re: Урок 50. SimpleAdapter. Используем ViewBinder
Добавлено: 27 ноя 2012, 22:40
lavan
Спасибо, разобрался
Re: Урок 50. SimpleAdapter. Используем ViewBinder
Добавлено: 06 фев 2013, 15:24
dcbp
Друзья, а можно в биндере получить position? Например для работы с исходным массивом.
Re: Урок 50. SimpleAdapter. Используем ViewBinder
Добавлено: 06 фев 2013, 16:29
dens
Походу нет.
Если нельзя, то можно, попробовать обойти это, если передавать в качестве элементов не простейшие типы (инты и строки), а объекты, в которые зашивать позицию и значение (хэш, например). Я бы так сделал, наверное.
Re: Урок 50. SimpleAdapter. Используем ViewBinder
Добавлено: 06 фев 2013, 18:26
dcbp
Вряд ли получится. Для того чтобы их передать их надо знать, а если в процессе мы например удалим элемент? или наоборот добавим? Исходный массив поменяется и поменяется позиция....
Re: Урок 50. SimpleAdapter. Используем ViewBinder
Добавлено: 06 фев 2013, 20:00
dens
Ну да придётся тогда и обновление элементов делать при этом.
Но если надо, то ничего не поделать.
Re: Урок 50. SimpleAdapter. Используем ViewBinder
Добавлено: 10 фев 2013, 19:16
perelygin
Доброго времени суток.
Скажите, а можно ли использовать Binder для того что бы динамически добавлять элементы в размету для элемента списка.
Например, в список выведен перечень товаров(название и картинка).
В зависимости от типа товара, нужно в разметке для элемента списка отражать тот или иной набор .
Т.е. для типа "сыпучие товары", отражать объем и вес.
Для типа "летучие товары", отражать запах , цвет, ядовитость(т.е. уже три параметра, а на два)
Re: Урок 50. SimpleAdapter. Используем ViewBinder
Добавлено: 11 фев 2013, 00:19
dens
Тогда ведь тебе надо для всех товаров передавать максимальный набор объектов для размещения во вью и только в определённых случаях (когда, например, значения больше нуля или строки непустые) их добавлять во вью. Наверное, только так. В адаптер-то тебе в любом случае придётся добавлять элементы с одинаковым набором параметров (количеством и типом я имею ввиду).
Re: Урок 50. SimpleAdapter. Используем ViewBinder
Добавлено: 10 май 2013, 23:46
Sintel
Что написать вместо "ЧТО_ТО" в данном коде, чтобы некоторые progressbar'ы были видимы, а некоторые невидимы.
Например 5 и 6 видимы, остальные нет.
Код: Выделить всё
public boolean setViewValue(View view, Object data, String textRepresentation) {
int i = 0;
switch (view.getId()) {
// LinearLayout
// ProgressBar
case R.id.pvProgress1:
i = ((Integer) data).intValue();
((ProgressBar)view).setProgress(i);
if ("ЧТО_ТО" || "ЧТО_ТО")
((ProgressBar)view).setVisibility(View.VISIBLE);
else
((ProgressBar)view).setVisibility(View.INVISIBLE);
return true;
}
}
return false;
}
});
Re: Урок 50. SimpleAdapter. Используем ViewBinder
Добавлено: 09 июл 2013, 19:37
Re4r
Подскажите пожалуйста как MyViewBinder сделать вложенным в MainActivity классом???
Re: Урок 50. SimpleAdapter. Используем ViewBinder
Добавлено: 24 сен 2013, 16:26
snowkam
Добрый день.
Вопрос по уроку с подвыпердом
нужно чтобы цвет бара зависел не от одного параметра в нашем случаи от значения из массива load[] а от двух значений. Например введем еще одно поле логическое isColor
если значение истина то тогда можно менять цвет. В зависимости от параметра load[].
Такое возможно?
Re: Урок 50. SimpleAdapter. Используем ViewBinder
Добавлено: 24 сен 2013, 16:29
Foenix
да.
Re: Урок 50. SimpleAdapter. Используем ViewBinder
Добавлено: 24 сен 2013, 16:36
snowkam
Foenix писал(а):да.
а как дайте наколочку ....
Re: Урок 50. SimpleAdapter. Используем ViewBinder
Добавлено: 24 сен 2013, 16:41
Foenix
да как? просто в условие, где нужен выбор добавляй свое с помощью & (логическое И). Значение бери из дополнительного поля.
Re: Урок 50. SimpleAdapter. Используем ViewBinder
Добавлено: 28 сен 2013, 17:42
trew
Подскажите пожалуйста, если разместить class MyViewBinder в отдельном файле MyViewBinder.java
как присоединить его к MainActivity.java?
У меня ошибка на строчках
int red = getResources().getColor(R.color.Red);
int orange = getResources().getColor(R.color.Orange);
int green = getResources().getColor(R.color.Green);
getResources() - не понимает что это.
Multiple markers at this line
- view cannot be resolved
- The method getResources() is undefined for the type
MyViewBinder
Из предыдущих сообщений я так и не разобрался.
Re: Урок 50. SimpleAdapter. Используем ViewBinder
Добавлено: 28 сен 2013, 17:46
rezak90
getResources() это метод контекста, тебе нужно иметь ссылку на контекст что бы вызвать метод getResources
Re: Урок 50. SimpleAdapter. Используем ViewBinder
Добавлено: 20 окт 2013, 00:48
smt005
Добрый день/ночь.
Есть список который состоит из текста и кнопок и создаваемый как в примере с помощью ViewBinder.
Вопрос:
Как сделать взаимодействие кнопок этого списка?
Т.е. при нажатии на кнопку определить в каком элементе списка эта кнопка находится и выполнить какое нибудь действие (например удаление строки).
Или как лучше сделать такую задачу?
Re: Урок 50. SimpleAdapter. Используем ViewBinder
Добавлено: 20 окт 2013, 11:02
trew
При нажатии на кнопку списка, показываем какую кнопку нажали.
class MainActivity
[syntax=java]import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends Activity {
final String TAG = "mylog";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView listView = (ListView) findViewById(R.id.list_data);
CustomAdapter customAdapter = new CustomAdapter();
listView.setAdapter(customAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
DataModel dataModel = (DataModel) adapterView.getItemAtPosition(i);
Log.d(TAG, "string_1: " + dataModel.getName());
Log.d(TAG, "int_1: " + dataModel.getAnInt());
Log.d(TAG, "double_1: " + dataModel.getaDouble());
Log.d(TAG, "otherData_1: " + dataModel.getOtherData());
Toast.makeText(MainActivity.this, "Item Clicked: " + i, Toast.LENGTH_SHORT).show();
}
});
}
}
[/syntax]
class CustomAdapter extends BaseAdapter
[syntax=java]import java.util.ArrayList;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class CustomAdapter extends BaseAdapter {
final String TAG = "mylog";
ArrayList<DataModel> listArray;
public CustomAdapter() {
listArray = new ArrayList<DataModel>(5);
listArray.add(new DataModel("name1", 10, 4.5, "Java"));
listArray.add(new DataModel("name2", 20, 5.5, "Python"));
listArray.add(new DataModel("name3", 30, 6.5, "Pascal"));
listArray.add(new DataModel("name4", 40, 7.5, "Android"));
listArray.add(new DataModel("name5", 50, 9.5, "SQL"));
}
@Override
public int getCount() {
return listArray.size(); // всего элементов в списке list
}
@Override
public Object getItem(int i) {
return listArray.get(i); // получить элемент из list
}
@Override
public long getItemId(int i) {
return i; // id элемента
}
@Override
public View getView(int index, View view, final ViewGroup parent) {
if (view == null) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
view = inflater.inflate(R.layout.single_list_item, parent, false);
}
final DataModel dataModel = listArray.get(index);
TextView textView = (TextView) view.findViewById(R.id.tv_string_data);
textView.setText(dataModel.getName());
Button button = (Button) view.findViewById(R.id.btn_number_data);
button.setText("" + dataModel.getAnInt());
textView = (TextView) view.findViewById(R.id.tv_double_data);
textView.setText("" + dataModel.getaDouble());
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Log.d(TAG, "string_2: " + dataModel.getName());
Log.d(TAG, "int_2: " + dataModel.getAnInt());
Log.d(TAG, "double_2: " + dataModel.getaDouble());
Log.d(TAG, "otherData_2: " + dataModel.getOtherData());
Toast.makeText(parent.getContext(), "button clicked: " + dataModel.getAnInt(), Toast.LENGTH_SHORT).show();
}
});
view.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Log.d(TAG, "string_3: " + dataModel.getName());
Log.d(TAG, "int_3: " + dataModel.getAnInt());
Log.d(TAG, "double_3: " + dataModel.getaDouble());
Log.d(TAG, "otherData_3: " + dataModel.getOtherData());
Toast.makeText(parent.getContext(), "view clicked: " + dataModel.getOtherData(), Toast.LENGTH_SHORT).show();
}
});
return view;
}
}
[/syntax]
Помогите с ответами на следующие вопросы:
1. почему не срабатывает слушатель в MainActivity - listView.setOnItemClickListener (подробно, чтобы было понятно новичку)
2. зачем в классе CustomAdapter два раза писать похожий код
для button.setOnClickListener
и для view.setOnClickListener
Можно как-то сделать чтобы слушатель был один, а button отождествлялась со списком List (нужен пример).
Re: Урок 50. SimpleAdapter. Используем ViewBinder
Добавлено: 21 окт 2013, 10:25
trew
Помогите с ответами на вопросы, см. предыдущее сообщение.
Re: Урок 50. SimpleAdapter. Используем ViewBinder
Добавлено: 21 окт 2013, 15:04
smt005
Да, у меня аналогичная задача и в интернете не могу найти решение.
Re: Урок 50. SimpleAdapter. Используем ViewBinder
Добавлено: 24 окт 2013, 07:10
River
В этом уроке меняется цвет LinearLayout, содержащего ProgressBar. А как изменить цвет самого ProgressBar? Нагуглился такой пример:
progressBar.getProgressDrawable().setColorFilter(Color.RED, Mode.SRC_IN);
Но вместо смены цвета, приложение тупо падает. Подскажите, если кто знает, как правильно менять цвет ProgressBar.