powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / Не работает findViewById в собственном Адаптере
15 сообщений из 15, страница 1 из 1
Не работает findViewById в собственном Адаптере
    #38824520
Фотография Мозговой_слизень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уж простите инвалида умственного труда, сами мы не местные. В общем я создал свой адаптер со своим шаблоном для того, чтобы кастомизировать отображение ListView.
Проблема вот в чем, в методе onPreExecute() я никак не могу обратиться в элементу моего XML-шаблона для того, чтобы сделать активным ProgressBar (типа картинка грузится в данный момент).

Код такой:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  
      protected void onPreExecute() 
     {
            super.onPreExecute();          
            //LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);// - ошибку не выдает
            //View rowView = inflater.inflate(R.layout.images_list, null); // - ошибку не выдает
            //ProgressBar linlaHeaderProgress = (ProgressBar)rowView.findViewById(R.id.progressBar);// даже прогресс бар вроде нашли
            //linlaHeaderProgress.setVisibility(View.VISIBLE); // пытаюсь сделать его видимым а хрен, ему пофиг
            bmImage.setImageResource(R.drawable.clock); // поэтому как инвалид тупо картинку вставляю с надписью "Загрузка".
         }



Че за ботва, а?
...
Рейтинг: 0 / 0
Не работает findViewById в собственном Адаптере
    #38824534
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мозговой_слизень, что мешает прогресс бар располагать в корне активити? Или тебе нужно, чтоб каждая строка отображала занятость?
...
Рейтинг: 0 / 0
Не работает findViewById в собственном Адаптере
    #38824535
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мозговой_слизеньonPreExecute()
Это откуда?
...
Рейтинг: 0 / 0
Не работает findViewById в собственном Адаптере
    #38824565
Фотография Мозговой_слизень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanМозговой_слизень, что мешает прогресс бар располагать в корне активити? Или тебе нужно, чтоб каждая строка отображала занятость?
Мы имеем список из 30-ти "пунктов", в каждом пункте текст и картинка. Пока картинка грузится, я бы хотел отобразить статусбар вместо каждой картинки. Кароче я тупо запутался.
Вот весь код, не кидайте сильно тапками:


Код: 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.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
public class MyAdapter extends ArrayAdapter<String> {

    private final Context context;
    private final String[] values;



    public MyAdapter(Context context, String[] values) {

        super(context, R.layout.images_list, values);
        this.context = context;
        this.values = values;
        //linlaHeaderProgress = (ProgressBar)findViewById(R.id.progressBar3);
    }


    @Override
    public View getView (int position, View convertView, ViewGroup parent)
    {

        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);// назначили какую-то хуйню
        View rowView = inflater.inflate(R.layout.images_list, parent, false); // назначили новой хуйне мой шаблон

        TextView textView = (TextView)rowView.findViewById(R.id.label); // взяли ID текстовой метки из моего шаблона
        TextView textView2 = (TextView)rowView.findViewById(R.id.label2);
        ProgressBar linlaHeaderProgress = (ProgressBar)rowView.findViewById(R.id.progressBar);

        ImageView image = (ImageView)rowView.findViewById(R.id.icon);

        String artNoSeparated = values[position]; // переназначили переменную для удобства
        String[] textArray=artNoSeparated.split("--------");// получили массив

        textView2.setText(textArray[1]); // установили часть текста - URL.
        textView.setText(textArray[0]); // установили часть текста - артикул и остаток.
        String s = values[position];


        new DownloadImageTask(image).execute(textArray[1]); // а теперь видно по Execute
        //linlaHeaderProgress.setVisibility(View.GONE); // а потом типа и прогресс исчезает
        return rowView;

    }



    private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> //грузим изображение 2
    {
        ImageView bmImage;

        public DownloadImageTask(ImageView bmImage) //это метод просто так, для удобства
        {
            this.bmImage = bmImage;
        }

        protected Bitmap doInBackground(String... urls) // другой поток
        {



            String urldisplay = urls[0];
            Bitmap mIcon11 = null;
            try {

                InputStream in = new java.net.URL(urldisplay).openStream();
                mIcon11 = BitmapFactory.decodeStream(in);
            }
            catch (Exception e)
            {
                Log.e("Error", e.getMessage());
                e.printStackTrace();
            }
            return mIcon11;
        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();


            //LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);// назначили какую-то хуйню
            //View rowView = inflater.inflate(R.layout.images_list, null); // назначили новой хуйне мой шаблон
            //ProgressBar linlaHeaderProgress = (ProgressBar)rowView.findViewById(R.id.progressBar);
            //linlaHeaderProgress.setVisibility(View.VISIBLE);
            bmImage.setImageResource(R.drawable.clock);
            //bmImage.setVisibility(View.GONE);


        }
        protected void onPostExecute(Bitmap result) // при выполнении обращение к UI
        {
            bmImage.setVisibility(View.VISIBLE);
            bmImage.setImageBitmap(result);


            LayoutInflater inflater =  (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View row = inflater.inflate(R.layout.images_list, null);
            TextView thumb = (TextView) row.findViewById(R.id.label);
            thumb.setText("111");
            ProgressBar linlaHeaderProgress = (ProgressBar)row.findViewById(R.id.progressBar);
            linlaHeaderProgress.setVisibility(View.VISIBLE);

           // bmImage.setVisibility(View.VISIBLE);
            //linlaHeaderProgress.setVisibility(View.VISIBLE);

        }
    }



Проблема в том, что я никак не могу достучаться из методов onPostExecute и onPreExecute до прогрессбара в моем XML-шаблоне:
Код: java
1.
2.
ProgressBar linlaHeaderProgress = (ProgressBar)row.findViewById(R.id.progressBar);
linlaHeaderProgress.setVisibility(View.VISIBLE); // не реагирует но и ошибку не выдает
...
Рейтинг: 0 / 0
Не работает findViewById в собственном Адаптере
    #38824568
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мозговой_слизень, в getView сделай ViewHolder , который и передавай а AssyncTask. А то что ты тут нагородил, оно не к нужной строке обращается, а к новому шаблону.
...
Рейтинг: 0 / 0
Не работает findViewById в собственном Адаптере
    #38824590
Фотография Мозговой_слизень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ща буду разбираться, спасибо.
...
Рейтинг: 0 / 0
Не работает findViewById в собственном Адаптере
    #38825000
Фотография Мозговой_слизень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanМозговой_слизень, в getView сделай ViewHolder , который и передавай а AssyncTask .
ниифга не понял, а как передать?
...
Рейтинг: 0 / 0
Не работает findViewById в собственном Адаптере
    #38825008
Фотография Мозговой_слизень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мозговой_слизеньwadmanМозговой_слизень, в getView сделай ViewHolder , который и передавай а AssyncTask .
ниифга не понял, а как передать?
в том-то и дело, что класс DownloadImageTask не видит ничего из getView.
...
Рейтинг: 0 / 0
Не работает findViewById в собственном Адаптере
    #38825027
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мозговой_слизеньwadmanМозговой_слизень, в getView сделай ViewHolder , который и передавай а AssyncTask .
ниифга не понял, а как передать?
Смотрел тут 14774902 ? в getView в тэг засовываешь ViewHolder и потом тэг и передаешь.
Мозговой_слизеньв том-то и дело, что класс DownloadImageTask не видит ничего из getView.
Дак передавать нужно.
...
Рейтинг: 0 / 0
Не работает findViewById в собственном Адаптере
    #38825041
Фотография Мозговой_слизень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanМозговой_слизеньпропущено...

ниифга не понял, а как передать?
Смотрел тут 14774902 ? в getView в тэг засовываешь ViewHolder и потом тэг и передаешь.
Мозговой_слизеньв том-то и дело, что класс DownloadImageTask не видит ничего из getView.
Дак передавать нужно.

Лвдно, хорошо. А нафига нужен ViewHolder? Я тока что с ним попробовал, у меня почему-то в каждой строке картинки начали динамически меняться. Но даже не в этом суть. Просто как-нибудь передать можно без тега?
...
Рейтинг: 0 / 0
Не работает findViewById в собственном Адаптере
    #38825050
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мозговой_слизеньА нафига нужен ViewHolder?
Как раз для твоего случая.
Мозговой_слизеньЯ тока что с ним попробовал, у меня почему-то в каждой строке картинки начали динамически меняться.
Значит что-то делаешь не так.
...
Рейтинг: 0 / 0
Не работает findViewById в собственном Адаптере
    #38825069
Фотография Мозговой_слизень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanМозговой_слизеньА нафига нужен ViewHolder?
Как раз для твоего случая.
Мозговой_слизеньЯ тока что с ним попробовал, у меня почему-то в каждой строке картинки начали динамически меняться.
Значит что-то делаешь не так.

Так, получилось с косяком но мне понять главное как передать тег в AsyncTask. Как это сделать?
...
Рейтинг: 0 / 0
Не работает findViewById в собственном Адаптере
    #38825113
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мозговой_слизеньТак, получилось с косяком но мне понять главное как передать тег в AsyncTask. Как это сделать?
А как ты строку передаешь?
Мозговой_слизень
Код: java
1.
new DownloadImageTask(image).execute(textArray[1]); // а теперь видно по Execute
...
Рейтинг: 0 / 0
Не работает findViewById в собственном Адаптере
    #38825137
Фотография Мозговой_слизень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanМозговой_слизеньТак, получилось с косяком но мне понять главное как передать тег в AsyncTask. Как это сделать?
А как ты строку передаешь?
Мозговой_слизень
Код: java
1.
new DownloadImageTask(image).execute(textArray[1]); // а теперь видно по Execute



да, тока как передать туда тег, да еще и допилить класс, чтобы этот тег принять, это как-то слишком сложно для меня.
...
Рейтинг: 0 / 0
Не работает findViewById в собственном Адаптере
    #38825153
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мозговой_слизеньwadmanпропущено...

А как ты строку передаешь?
пропущено...


да, тока как передать туда тег, да еще и допилить класс, чтобы этот тег принять, это как-то слишком сложно для меня.
Шутишь? Если нет, то здесь
Мозговой_слизень
Код: java
1.
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> //грузим изображение 2


ты задаешь тип параметра, который передаешь в execute
Мозговой_слизень
Код: java
1.
new DownloadImageTask(image).execute(textArray[1]); // а теперь видно по Execute
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Android [игнор отключен] [закрыт для гостей] / Не работает findViewById в собственном Адаптере
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]