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

Баг с items при прокручивании ListView - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Установщик apk файлов http://www.cyberforum.ru/android-dev/thread1458057.html
Всем доброго времени. Подскажите пожалуйста, существуют ли решения на android, приложения по типу инсталлятор, чтоб он мог одновременно устанавливать несколько приложений? То есть некий установочный...
Программирование Android Ошибка в logcat AndroidStudio Здравствуйте! Написал простенькое приложенице в Студии, ошибок вроде нет. Но при запуске эмулятора приложение вылетает. Не могу понять что за ошибка. Вот что выдал Лог 05-25 18:16:24.793 ... http://www.cyberforum.ru/android-dev/thread1458037.html
Программирование Android WebView в фоне
Нужно в webview открыть определенную ссылку, однако на сайте стоит защита , и открывается только с браузера. Каким образом можно установить настройки клиенту WebView , чтобы он отображался как...
Программирование Android Не отправляет post запрос в эмуляторе android 4.4
Есть приложение, которое отправляет и получает данные из нета посредством пост запроса, в андройд 2.2 все работает хорошо, в андройд 4.4 не работает, в чем может быть проблема ?
Программирование Android Анимация взрыва http://www.cyberforum.ru/android-dev/thread1457599.html
Как реализовать и в какую сторону капать?? У меня есть игра в которой есть окно 7 на 6 клеток и разные фигурки в клетках. И когда 3 одинаковых фигурки собираются в ряд по диагонали или вертикали...
Программирование Android Создание эмулятора в Android Studio Скачал Android Studio. При установке все пути установки программ оставлял по умолчанию. Сейчас создал эмулятор, хочу запустить через него код и он ругается почему-то. Вот что пишет: ... подробнее

Показать сообщение отдельно
Mikalai
256 / 232 / 94
Регистрация: 11.01.2015
Сообщений: 656
27.05.2015, 20:49
Аннотация @Override информирует компилятор о том, что метод перегружает метод в суперклассе.

Попробовал написать адаптер с использованием 2х itemView. Но тут не знаю как переиспользовать старые view-элементы. Наверное такой вариант ресурсозатратен, но по крайней мере работает.

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
public class ListAdapter extends BaseAdapter {
 
    Context context;
    LayoutInflater lInflater;
    int[] numbers;
 
    public ListAdapter(Context context, int[] numbers) {
        this.context = context;
        this.numbers = numbers;
        this.lInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
 
    @Override
    public int getCount() {
        return numbers.length;
    }
 
    @Override
    public Object getItem(int position) {
        return numbers[position];
    }
 
    @Override
    public long getItemId(int position) {
        return position;
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view;
        int element = (Integer) getItem(position);
        if(element % 2 == 0) {
            view = lInflater.inflate(R.layout.item1, parent, false);
        } else {
            view = lInflater.inflate(R.layout.item2, parent, false);
        }
        ((TextView) view.findViewById(R.id.textView)).setText("" + element);
 
        return view;
    }
}
И ещё попытался использовать ViewHolder. Попинайте код если не сложно.

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
public class ListAdapterWithViewHolder extends BaseAdapter {
 
    Context context;
    LayoutInflater lInflater;
    int[] numbers;
 
    public ListAdapterWithViewHolder(Context context, int[] numbers) {
        this.context = context;
        this.numbers = numbers;
        this.lInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
 
    @Override
    public int getCount() {
        return numbers.length;
    }
 
    @Override
    public Object getItem(int position) {
        return numbers[position];
    }
 
    @Override
    public long getItemId(int position) {
        return position;
    }
 
    static class ViewHolder {
        TextView holderTextView1;
        TextView holderTextView2;
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
 
        View view;
        int element = (Integer) getItem(position);
        if(element % 2 == 0) {
            view = lInflater.inflate(R.layout.item11, parent, false);
            ViewHolder viewHolder = getHolder(view);
            if(viewHolder.holderTextView1 == null) {
                viewHolder.holderTextView1 = (TextView) view.findViewById(R.id.textView11);
            }
            viewHolder.holderTextView1.setText("" + element);
        } else {
            view = lInflater.inflate(R.layout.item22, parent, false);
            ViewHolder viewHolder = getHolder(view);
            if(viewHolder.holderTextView2 == null) {
                viewHolder.holderTextView2 = (TextView) view.findViewById(R.id.textView22);
            }
            viewHolder.holderTextView2.setText("" + element);
        }
        return view;
    }
 
    private ViewHolder getHolder(View view) {
        ViewHolder viewHolder = (ViewHolder) view.getTag();
        if(viewHolder == null) {
            viewHolder = new ViewHolder();
            view.setTag(viewHolder);
        }
        return viewHolder;
    }
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru