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

Кэширование изображений - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Публикация в одноклассниках http://www.cyberforum.ru/android-dev/thread1254510.html
можете дать ссылку на код для публикации картинок в одноклассниках?? Добавлено через 32 минуты где посмотреть как регистрировать приложение в одноклассниках ?? ижелательно код приложения для того...
Программирование Android GPS Location (GPS_PROVIDER) как получить координаты Всем привет. Столкнулся с такой проблемой , может еще кто то сталкивался да знает что да как . Вообщем тестя получение latitude и longtitude на эмуляторе - все прекрасно. Получает GPS coords сразу.... http://www.cyberforum.ru/android-dev/thread1254474.html
Программирование Android Интеграция ZXing
Подскажите, пожалуйста, как правильно интегрировать библиотеку ZXing в своё приложение (не через intent!) Смотрел урок Климова, перечитал кучу ответов на stackOverflow, ничего не работает, всегда...
Программирование Android Аналог context menu
Всем привет. Я пишу судоку. Проблема в том что при взаимодействии с ячейкой вызывается новое активити(диалога, скрины снизу). И это очень не удобно в виду того, что диалог закрывает очень большую...
Программирование Android Постовщик рекламы, кроме AdMob http://www.cyberforum.ru/android-dev/thread1254412.html
Если кто-то пользуется чем-либо кроме AdMob поделитесь пожалуйста своим опытом, может посоветовать можете что нибудь.
Программирование Android Custom ExpandableListView перемешиваются группы Пытаюсь создать свой раскрывающийся список с текстом и плюшками. Все вроде ок, кроме одного момента: при раскрытии группы соседние перемешиваются. Вот как это выглядит до раскрытия группы: и... подробнее

Показать сообщение отдельно
cezer_ak
4 / 4 / 1
Регистрация: 14.02.2013
Сообщений: 232

Кэширование изображений - Программирование Android

11.09.2014, 16:13. Просмотров 1807. Ответов 5
Метки (Все метки)

Добрый День Ув. Программисты.

Приложение нуждается в Кэшировании изображений, загруженных с сервера.

Вопрос: Как осуществить?

Что уже имеется:

MainActivity
Кликните здесь для просмотра всего текста
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
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
 
public class MainActivity extends Activity  {
    private static final String TAG = MainActivity.class.getSimpleName();
    CustomListAdapter aAdpt;
    private EditText editTxt;
    private View footer;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Log.d(TAG, "Стартанули");
        ArrayList<NewsItem> image_details = getListData();
        final ListView lv1 = (ListView) findViewById(R.id.listView);
 
        aAdpt = new CustomListAdapter(this, image_details);
        lv1.setAdapter(aAdpt);
        lv1.setTextFilterEnabled(true);
        editTxt = (EditText) findViewById(R.id.inputSearch);
        lv1.setAdapter(aAdpt);
 
        editTxt.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                Log.d(TAG, "onTextChanged [" + s + "] - Start [" + start + "] - Before [" + before + "] - Count [" + count + "]");
                if (count < before) {          
                aAdpt.resetData();
                }
                aAdpt.getFilter().filter(s.toString());
            }
 
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                Log.d(TAG, "beforeTextChanged [" + s + "] - Start [" + start + "] - After [" + after + "] - Count [" + count + "]");
            }
 
            @Override
            public void afterTextChanged(Editable s) {
                Log.d(TAG, "afterTextChanged [" + s + "] - Editable ");
            }
        });
        lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> a, View v, int position, long id) {
                Object o = lv1.getItemAtPosition(position);
                NewsItem newsData = (NewsItem) o;
                Toast.makeText(MainActivity.this, "Selected :" + " " + newsData,
                        Toast.LENGTH_LONG).show();
            }
        });
 
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) { 
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
        }
 
    private ArrayList<NewsItem> getListData() {
        ArrayList<NewsItem> results = new ArrayList<NewsItem>();
        results.add(new NewsItem("Текст1", "Текст2", "http://musite.ru/1.jpg"));
        results.add(new NewsItem("Текст1", "Текст2", "http://musite.ru/2.jpg"));
        results.add(new NewsItem("Текст1", "Текст2", "http://musite.ru/3.jpg"));
        results.add(new NewsItem("Текст1", "Текст2", "http://musite.ru/4.jpg"));
        results.add(new NewsItem("Текст1", "Текст2", "http://musite.ru/5.jpg"));
 
        //B ещё +100500
        return results;
    }
    }



CustomListAdapter
Кликните здесь для просмотра всего текста
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
107
108
109
110
111
112
113
114
115
116
117
118
119
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
 
public class CustomListAdapter extends BaseAdapter implements Filterable {
    private List<NewsItem> listData;
        private ArrayList<NewsItem> origlistData;
    private LayoutInflater layoutInflater;
        private Filter ADRFilter;
 
    public CustomListAdapter(Context context, ArrayList<NewsItem> listData) {
        this.listData = listData;
        layoutInflater = LayoutInflater.from(context);
                this.origlistData = listData;
    }
 
    @Override
    public Filter getFilter() {
        if (ADRFilter == null)
            ADRFilter = new adrFilter();
        return ADRFilter;
    }
 
    @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.reportedDateView = (TextView) convertView.findViewById(R.id.Date);
                        holder.imageView = (ImageView) convertView.findViewById(R.id.thumbImage);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
 
        NewsItem newsItem = (NewsItem) listData.get(position);
        holder.headlineView.setText(newsItem.getHeadline());
        holder.reportedDateView.setText(newsItem.getDate());
        if (holder.imageView != null) {
            new ImageDownloaderTask(holder.imageView).execute(newsItem.getUrl());
        }
        return convertView;
    }
 
    public void resetData() {
           listData  = origlistData;
    }
 
    public void add(Collection<String> listdata) {
        this.listData.addAll(listData);
    }
 
    static class ViewHolder {
        TextView headlineView;
        //TextView reporterNameView;
        TextView reportedDateView;
        ImageView imageView;
    }
 
    private class adrFilter extends Filter {
        @Override
        protected FilterResults performFiltering(CharSequence constraint) {
            FilterResults results = new FilterResults();
            if (constraint == null || constraint.length() == 0) {
                results.values = origlistData;
                results.count = origlistData.size();
            }
            else {
                List<NewsItem> nListData = new ArrayList<NewsItem>();
 
                for (NewsItem p : listData) {
                    if (p.getHeadline().toUpperCase().contains(constraint.toString().toUpperCase()))
                        nListData.add(p);
                }
 
                results.values = nListData;
                results.count = nListData.size();
 
            }
            return results;
        }
 
        @Override
        protected void publishResults(CharSequence constraint,
                                      FilterResults results) {
            if (results.count == 0)
                notifyDataSetInvalidated();
            else {
                listData = (List<NewsItem>) results.values;
                notifyDataSetChanged();
            }
        }
    }
}



NewsItem
Кликните здесь для просмотра всего текста
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
public class NewsItem {
    private String headline;
    private String reporterName;
    private String date;
    private String url;
 
    public NewsItem(String s, String s1, String s2) {
        this.headline = s;
        this.reporterName = reporterName;
        this.date = s1;
        this.url = s2;
    }
 
    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 + "]";
    }
}


Что пробовал делать:

1) Пробовал использовать с ГитХаба:
ImageLoader.java
FileCache.java
MemoryCache.java

Так и не удалось мне их прикрутить.
2) Пробовал проверять перед загрузкой и сохранять если не имеется в памяти - не получилось
3) Пробовал брать за пример вообще другой исходник с реализацией Lazyload но не смог туда прикрутить Поиск по ListView точнее прикрутил но при поиске ничего не происходит.

Нуждаюсь в помощи профессионалов. Help me!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru