Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
JavJun
12 / 10 / 5
Регистрация: 27.08.2015
Сообщений: 236
#1

Кастомный адаптер listView

09.01.2017, 16:39. Просмотров 870. Ответов 2
Метки нет (Все метки)

Доброго времени суток,
в общем впервые столкнулся с задачей создания кастомного адаптера для listView. Нашел много примеров/статей, написал код...но он не работает. Причем студия не выдает никаких ошибок, listView просто не отображается.

Сам код:

WeatherFragment.java
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
ArrayList<DayForecast> weather = new ArrayList<>();
    WeatherAdapter weatherAdapter;
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_weather, container, false);
       
        // тут другие текствью
 
        weatherAdapter = new WeatherAdapter(getContext(), weather);
        ListView listView = (ListView)rootView.findViewById(R.id.listView);
        listView.setAdapter(weatherAdapter);
 
        return rootView;
    }
 
    ...
    // для примера отправил на адаптер простые string'и
    weather.add(new DayForecast("weather" ,"weather" ,"weather" ,"weather" ,
                        "weather" ,"weather" ,"weather" , R.drawable.day_clear));
    ...


DayForecast.java
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class DayForecast{
 
    String time;
    String date;
    String day;
    String condition;
    String pressure;
    String wind;
    String temp;
    int icon;
 
    DayForecast(String _time, String _date, String _day, String _condition, String _pressure,
                String _wind, String _temp, int _icon){
        time = _time;
        date = _date;
        day = _day;
        condition = _condition;
        pressure = _pressure;
        wind = _wind;
        temp = _temp;
        icon = _icon;
    }
}


WeatherAdapter.java
Кликните здесь для просмотра всего текста
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
public class WeatherAdapter extends BaseAdapter {
 
    Context ctx;
    LayoutInflater lInflater;
    ArrayList<DayForecast> objects;
 
    WeatherAdapter(Context context, ArrayList<DayForecast> weather) {
        ctx = context;
        objects = weather;
        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);
    }
 
    @Override
    public long getItemId(int position) {
        return position;
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = convertView;
        if (view == null) {
            view = lInflater.inflate(R.layout.list_item, parent, false);
        }
        DayForecast d = getWeather(position);
 
        ((TextView) view.findViewById(R.id.listTime)).setText(d.time);
        ((TextView) view.findViewById(R.id.listDate)).setText(d.date);
        ((TextView) view.findViewById(R.id.listDay)).setText(d.day);
        ((TextView) view.findViewById(R.id.listConditions)).setText(d.condition);
        ((TextView) view.findViewById(R.id.listPressure)).setText(d.pressure);
        ((TextView) view.findViewById(R.id.listWind)).setText(d.wind);
        ((TextView) view.findViewById(R.id.listTemp)).setText(d.temp);
        ((ImageView) view.findViewById(R.id.listIcon)).setImageResource(d.icon);
 
        return view;
    }
 
    DayForecast getWeather(int position) {
        return ((DayForecast) getItem(position));
    }
 
}


Буду рад любой помощи или подсказке.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2017, 16:39
Ответы с готовыми решениями:

ListView и кастомный адаптер
Добрый день ув. Программисты! Нашёл код который заполняет ListView с...

Не работает кастомный адаптер
Делаю программу с собственным адаптером для ListView. Компилятор ни на что не...

Несколько string массивов в кастомный адаптер
Есть ListView с кастомным адаптером в отдельном классе. Нашел код на просторах...

Кастомный listview в виде плиток
Доброго времени суток! Возник вопрос: возможно ли сделать listview...

Адаптер и ListView
Решил написать свой адаптер, работающий с listView. Беда в том, что программа...

2
fraley
110 / 110 / 43
Регистрация: 24.05.2015
Сообщений: 329
09.01.2017, 18:16 #2
Лучший ответ Сообщение было отмечено JavJun как решение

Решение

После того как добавили информация в ArrayList, вызовите:
Java
1
weatherAdapter.notifyDataSetChanged();
1
JavJun
12 / 10 / 5
Регистрация: 27.08.2015
Сообщений: 236
09.01.2017, 21:16  [ТС] #3
fraley, как элементарно!) Огромное спасибо, действительно забыл уведомить адаптер о изменении.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2017, 21:16

Адаптер ListView - ошибка
MainActivity.java: ... @Override public void onCreate(Bundle...

Получить item из listView по индексу. Адаптер - simpleadapter
Задача - убрать из listview некоторый итем. Думаю, можно сделать его...

Как правильно построить адаптер для показа данных из базы в ListView
Всем привет. На данный момент все данные в программе хранятся в классе, есть...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru