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

Некоректное отображение картинок в ListView - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Написать программу, на которую можно будет перетаскивать разные элементы и строить мнемосхемы http://www.cyberforum.ru/android-dev/thread1497733.html
День добрый. Хочу написать программу на которую можно будет перетаскивать разные элементы и строить мнемосхемы. Логика будущего приложения - нужно взять элемент из библиотеки, вытащить на карту...
Программирование Android Как исправить ошибку "Unfortunately, <Program> has stopped"? Я только начал изучать программирование программ для Android и сразу же после создания приложения Hello World, при запуске приложения на эмуляторе сталкиваюсь с ошибкой Unfortunately, MyProgramm has... http://www.cyberforum.ru/android-dev/thread1497729.html
Программирование Android Не запускается приложение
Здравствуйте, запускаю свое первое приложение и не получается. 1. Создал эмулятор 2. Хочу создать свое приложение , нажимаю Run 'app' (зеленая стрелка) и она не нажимается. Как можно это...
WindowActionBar что это Программирование Android
Смотрю уроки активации тулбара из материального дизайна. Некоторые в стиль тулбара засовывают следующий строчку а некоторые нет: <item name="windowActionBar">false</item> Что она означает и на что...
Программирование Android Анимация текста - временное увеличение размера и смена цвета http://www.cyberforum.ru/android-dev/thread1497493.html
Гуру помогите! Никогда с анимацией не работал. Есть десяток TextView на активити. При некоторых важных изменениях надо обратить на цифру внимание (остальные не трогать). Типа "эй, обрати...
Программирование Android Не читается JSON: "Error parsing data" Здравствуйте! Очень долго пытаюсь решить этот вопрос. Нашёл много тем и попробовал много способов. Ничего не помогло. На основе http://devcolibri.com/1486 и http://devcolibri.com/1548 сделал... подробнее

Показать сообщение отдельно
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310

Некоректное отображение картинок в ListView - Программирование Android

12.07.2015, 20:41. Просмотров 265. Ответов 0
Метки (Все метки)

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
import java.util.ArrayList;
 
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
 
 
public class CustomListAdapter extends BaseAdapter {
    private ArrayList<ListItem> listData;
    private LayoutInflater layoutInflater;
 
    public CustomListAdapter(Context context, ArrayList<ListItem> listData) {
        this.listData = listData;
        layoutInflater = LayoutInflater.from(context);
    }
    @Override
    public int getCount() {
        return listData.size();
    }
 
    @Override
    public Object getItem(int position) {
        return listData.get(position);
    }
 
    @Override
    public long getItemId(int position) {
        return position;
    }
 
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {
            convertView = layoutInflater.inflate(R.layout.list_row_layout, null);
            holder = new ViewHolder();
            //holder.headlineView = (TextView) convertView.findViewById(R.id.title);
            //holder.reporterNameView = (TextView) convertView.findViewById(R.id.reporter);
            //holder.reportedDateView = (TextView) convertView.findViewById(R.id.date);
           holder.imageView = (ImageView) convertView.findViewById(R.id.thumbImage);
           convertView.setTag(holder);
 
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
 
        ListItem newsItem = listData.get(position);
       // holder.headlineView.setText(newsItem.getHeadline());
        //holder.reporterNameView.setText("By, " + newsItem.getReporterName());
       // holder.reportedDateView.setText(newsItem.getDate());
 
        if (holder.imageView != null) {
            new ImageDownloaderTask(holder.imageView).execute(newsItem.getUrl());
       }
 
        return convertView;
    }
 
    static class ViewHolder {
        TextView headlineView;
        TextView reporterNameView;
        TextView reportedDateView;
        ImageView imageView;
    }
}
это код адаптера

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
import java.io.InputStream;
import java.lang.ref.WeakReference;
import java.net.HttpURLConnection;
import java.net.URL;
import org.apache.http.HttpStatus;
 
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.ImageView;
 
/**
 * @author Nilanchal
 *         <p/>
 *         Used to download the image, and after download completes,
 *         display it to imageView
 */
class ImageDownloaderTask extends AsyncTask<String, Void, Bitmap> {
 
    private final WeakReference<ImageView> imageViewReference;
 
    public ImageDownloaderTask(ImageView imageView) {
        imageViewReference = new WeakReference<ImageView>(imageView);
    }
 
    @Override
    protected Bitmap doInBackground(String... params) {
        return downloadBitmap(params[0]);
    }
 
    @Override
    protected void onPostExecute(Bitmap bitmap) {
        if (isCancelled()) {
            bitmap = null;
        }
 
       // if (imageViewReference != null) {
            ImageView imageView = imageViewReference.get();
           if (imageView != null) {
                if (bitmap != null) {
 
                    Bitmap bmHalf = Bitmap.createScaledBitmap(bitmap,500,300,false);
                    imageView.setImageBitmap(bmHalf);
               } else {
                  //  Drawable placeholder = imageView.getContext().getResources().getDrawable(R.drawable.placeholder);
                   // imageView.setImageDrawable(placeholder);
                }
            }
 
      }
Async Task

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
public class ListItem {
 
    private String headline;
    private String reporterName;
    private String date;
    private String url;
 
    public String getUrl() {
        return url;
    }
 
    public void setUrl(String url) {
        this.url = url;
    }
 
    public String getHeadline() {
        return headline;
    }
 
    public void setHeadline(String headline) {
        this.headline = headline;
    }
 
    public String getReporterName() {
        return reporterName;
    }
 
    public void setReporterName(String reporterName) {
        this.reporterName = reporterName;
    }
 
    public String getDate() {
        return date;
    }
 
    public void setDate(String date) {
        this.date = date;
    }
 
    @Override
    public String toString() {
        return "[ headline=" + headline + ", reporter Name=" + reporterName + " , date=" + date + "]";
    }
}
ListItem

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
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.Toast;
 
 
public class MainActivity extends Activity {
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        ArrayList<ListItem> listData = getListData();
 
        final ListView listView = (ListView) findViewById(R.id.custom_list);
        listView.setAdapter(new CustomListAdapter(this, listData));
      /*  listView.setOnItemClickListener(new OnItemClickListener() {
 
            @Override
            public void onItemClick(AdapterView<?> a, View v, int position, long id) {
                ListItem newsData = (ListItem) listView.getItemAtPosition(position);
                //Toast.makeText(MainActivity.this, "Selected :" + " " + newsData, Toast.LENGTH_LONG).show();
            }
        });*/
    }
 
    private ArrayList<ListItem> getListData() {
        ArrayList<ListItem> listMockData = new ArrayList<ListItem>();
        String[] images = getResources().getStringArray(R.array.images_array);
       // String[] headlines = getResources().getStringArray(R.array.headline_array);
 
        for (int i = 0; i < images.length; i++) {
            ListItem newsData = new ListItem();
            newsData.setUrl(images[i]);
           // newsData.setHeadline(headlines[i]);
           // newsData.setReporterName("Pankaj Gupta");
           // newsData.setDate("May 26, 2013, 13:35");
            listMockData.add(newsData);
        }
        return listMockData;
    }
}
MainActivity

XML
1
2
3
4
5
6
7
8
9
 <array name="images_array">
        <item>http://i.imgur.com/aNu0KI6.jpg</item>
        <item>http://i.imgur.com/zQYOQEj.jpg</item>
        <item>http://lh3.ggpht.com/_GEnSvSHk4iE/TDSfmyCfn0I/AAAAAAAAF8Y/cqmhEoxbwys/s144-c/_MG_3675.jpg</item>
        <item>http://lh6.ggpht.com/_ZN5zQnkI67I/TCFFZaJHDnI/AAAAAAAABVk/YoUbDQHJRdo/s144-c/P9250508.JPG</item>
        <item>http://lh4.ggpht.com/_XjNwVI0kmW8/TCOwNtzGheI/AAAAAAAAC84/SxFJhG7Scgo/s144-c/0014.jpg</item>
        <item>http://lh6.ggpht.com/_Nsxc889y6hY/TBp7jfx-cgI/AAAAAAAAHAg/Rr7jX44r2Gc/s144-c/IMGP9775a.jpg</item>
        <item>http://lh6.ggpht.com/_ZN5zQnkI67I/TCFFZaJHDnI/AAAAAAAABVk/YoUbDQHJRdo/s144-c/P9250508.JPG</item>
    </array>
списк url картинок

Добавлено через 2 минуты
При отображении в ListView изображения дублируются и некоректно отображаются. Подскажите пожалуйста как исправить мой код чтобы изображения не повторялись. А всегда для первого элемента ListView отображалась бы картинка по первому url для второго по второму и так далее как так исправить этот код??

Добавлено через 2 часа 17 минут
все разобрался
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.