Я работаю со списком в Android, который состоит из двух разделов, используя специальный адаптер. Я получаю данные из веб-сервиса.
он работает, если я устанавливаю размер массива в getcount() на array.size()+1, но затем при быстрой прокрутке списка я выхожу за пределы исключение.
интересно ваше мнение.
мое мнение
мой класс
list = (ListView) findViewById(R.id.list);
adapter = new com.santeplus.santeplusmag.santeplus.ListAdapter(this,articles);
list.setAdapter(adapter);
MultiScrollListener scrolls = new MultiScrollListener();
scrolls.addScrollListener(new EndlessScrollListener() {
@Override
public boolean onLoadMore(int page, int totalItemsCount) {
// Triggered only when new data needs to be appended to the list
// Add whatever code is needed to append new items to your AdapterView
customLoadMoreDataFromApi(page);
// or customLoadMoreDataFromApi(totalItemsCount);
return true; // ONLY if more data is actually being loaded; false otherwise.
}
});
// Append more data into the adapter
public void customLoadMoreDataFromApi(int offset) {
flag_loading = true;
// getting paged data
adapter.notifyDataSetChanged();
flag_loading=false;
// This method probably sends out a network request and appends new data items to your adapter.
// Use the offset value and add it as a parameter to your API request to retrieve paginated data.
// Deserialize API response and then construct new objects to append to the adapter
}
мой пользовательский адаптер
public class ListAdapter extends BaseAdapter {
private ArrayList articleList ;
Context context;
MainActivity main;
ListAdapter(MainActivity main)
{
this.main = main;
}
public ListAdapter( MainActivity main, ArrayList mData) {
this.articleList = mData;
this.main = main;
this.adsList = adsList;
}
public ArrayList getData() {
return articleList;
}
@Override
public int getCount() {
Log.d("size of a",String.valueOf(articleList.size()+1));
return articleList!=null ? articleList.size()+1 : 0;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public int getViewTypeCount(){
return 2;
}
@Override
public int getItemViewType(int position){
if(position % 4 == 0){
return 1;}else{return 0;}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
String s=""
ViewHolderItem holder = new ViewHolderItem();
int type = getItemViewType(position);
if (convertView == null) {
// Inflate the layout according to the view type
LayoutInflater inflater = (LayoutInflater) main.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (type == 0) {
// Inflate the layout with the data
convertView = inflater.inflate(R.layout.cell, null);
holder.title = (TextView) convertView.findViewById(R.id.title);
}
else {
// Inflate the layout with the ad
convertView = inflater.inflate(R.layout.fragment_ad, null);
holder.adView = (AdView) convertView.findViewById(R.id.adView1);
}
convertView.setTag(holder);
}else {
holder = (ViewHolderItem) convertView.getTag();
}
if (type == 0) {
holder.text1.setText(Html.fromHtml(this.main.articles.get(position).title));
try {
s = main.articles.get(position).image;
Log.d("url image",s);
}catch(UnsupportedEncodingException e){
e.printStackTrace();
}
Picasso.with(main)
.load(s)
.into(holder.image);
}if(type == 1) {
com.google.android.gms.ads.AdRequest adRequest = new com.google.android.gms.ads.AdRequest.Builder()
.build();
holder.adView.loadAd(adRequest);
}
return convertView;
}
@Override
public void notifyDataSetChanged()
{
super.notifyDataSetChanged();
}
}
Подробнее здесь: https://stackoverflow.com/questions/401 ... etcount-to
Никакие данные не отображаются в списке Android0, пока я не установлю размер массива в getcount равным размеру массива + ⇐ Android
Форум для тех, кто программирует под Android
1733256116
Anonymous
Я работаю со списком в Android, который состоит из двух разделов, используя специальный адаптер. Я получаю данные из веб-сервиса.
он работает, если я устанавливаю размер массива в getcount() на array.size()+1, но затем при быстрой прокрутке списка я выхожу за пределы исключение.
интересно ваше мнение.
мое мнение
мой класс
list = (ListView) findViewById(R.id.list);
adapter = new com.santeplus.santeplusmag.santeplus.ListAdapter(this,articles);
list.setAdapter(adapter);
MultiScrollListener scrolls = new MultiScrollListener();
scrolls.addScrollListener(new EndlessScrollListener() {
@Override
public boolean onLoadMore(int page, int totalItemsCount) {
// Triggered only when new data needs to be appended to the list
// Add whatever code is needed to append new items to your AdapterView
customLoadMoreDataFromApi(page);
// or customLoadMoreDataFromApi(totalItemsCount);
return true; // ONLY if more data is actually being loaded; false otherwise.
}
});
// Append more data into the adapter
public void customLoadMoreDataFromApi(int offset) {
flag_loading = true;
// getting paged data
adapter.notifyDataSetChanged();
flag_loading=false;
// This method probably sends out a network request and appends new data items to your adapter.
// Use the offset value and add it as a parameter to your API request to retrieve paginated data.
// Deserialize API response and then construct new objects to append to the adapter
}
мой пользовательский адаптер
public class ListAdapter extends BaseAdapter {
private ArrayList articleList ;
Context context;
MainActivity main;
ListAdapter(MainActivity main)
{
this.main = main;
}
public ListAdapter( MainActivity main, ArrayList mData) {
this.articleList = mData;
this.main = main;
this.adsList = adsList;
}
public ArrayList getData() {
return articleList;
}
@Override
public int getCount() {
Log.d("size of a",String.valueOf(articleList.size()+1));
return articleList!=null ? articleList.size()+1 : 0;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public int getViewTypeCount(){
return 2;
}
@Override
public int getItemViewType(int position){
if(position % 4 == 0){
return 1;}else{return 0;}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
String s=""
ViewHolderItem holder = new ViewHolderItem();
int type = getItemViewType(position);
if (convertView == null) {
// Inflate the layout according to the view type
LayoutInflater inflater = (LayoutInflater) main.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (type == 0) {
// Inflate the layout with the data
convertView = inflater.inflate(R.layout.cell, null);
holder.title = (TextView) convertView.findViewById(R.id.title);
}
else {
// Inflate the layout with the ad
convertView = inflater.inflate(R.layout.fragment_ad, null);
holder.adView = (AdView) convertView.findViewById(R.id.adView1);
}
convertView.setTag(holder);
}else {
holder = (ViewHolderItem) convertView.getTag();
}
if (type == 0) {
holder.text1.setText(Html.fromHtml(this.main.articles.get(position).title));
try {
s = main.articles.get(position).image;
Log.d("url image",s);
}catch(UnsupportedEncodingException e){
e.printStackTrace();
}
Picasso.with(main)
.load(s)
.into(holder.image);
}if(type == 1) {
com.google.android.gms.ads.AdRequest adRequest = new com.google.android.gms.ads.AdRequest.Builder()
.build();
holder.adView.loadAd(adRequest);
}
return convertView;
}
@Override
public void notifyDataSetChanged()
{
super.notifyDataSetChanged();
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/40175872/no-data-displayed-in-listview-android0-until-i-set-the-array-size-in-getcount-to[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия