2015-03-23 2 views
0

Я работаю с ListFragment и подготовил пользовательский адаптер ListView, расширив его из BaseAdapter, я вызвал метод установки адаптера во Фрагменте, но Listview ничего не отображает. Ниже мой заказ адаптера и ListFragment классы:Пользовательский адаптер ListView не отображает результаты

Адаптер:

package adapters; 

import android.content.Context; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.TextView; 

import com.sarham.kabs.fruity.R; 

/** 
* Created by Kabunyi Wanja on 22/03/2015. 
*/ 
public class CategoriesListAdapter extends BaseAdapter{ 
    private Context context; 

    public CategoriesListAdapter(Context context) { 
     this.context = context; 
    } 

    @Override 
    public int getCount() { 
     return 0; 
    } 

    @Override 
    public Object getItem(int position) { 
     return position; 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     CategoryViewHolder categoryViewHolder; 
     if(convertView==null){ 
      LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = inflater.inflate(R.layout.categories_list_custom_layout, parent, false); 

      categoryViewHolder = new CategoryViewHolder(); 
      categoryViewHolder.category = (TextView)convertView.findViewById(R.id.tv_categories); 
      convertView.setTag(categoryViewHolder); 
     } 
     else{ 
      categoryViewHolder = (CategoryViewHolder) convertView.getTag(); 
     } 
     categoryViewHolder.category.setText("Category"); 
     //on testing, the below line never executes 
     Log.d("ADAPTER", "Textview updated"); 

     return convertView; 
    } 
    //ViewHolder class 
    public static class CategoryViewHolder{ 
     TextView category; 
    } 
} 

LIstFragment:

package com.sarham.kabs.fruity; 

import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.ListFragment; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ListView; 

import adapters.CategoriesListAdapter; 

/** 
* Created by Kabunyi Wanja on 22/03/2015. 
*/ 
public class CategoriesFragment extends ListFragment { 
    private ListView categoriesListView; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.categories_fragment, container, false); 
     categoriesListView = (ListView)v.findViewById(android.R.id.list); 
     setCategoriesListAdapter(); 
     Log.d("ADAPTER: ", "Adapter has been set for listview"); 

     return v; 
    } 
    //set adapter to categoriesListView 
    public void setCategoriesListAdapter(){ 
     categoriesListView.setAdapter(new CategoriesListAdapter(getActivity())); 
    } 
} 

ответ

0

Вы getCount() метод возвращает ноль , Это приведет к тому, что ListView будет действовать так, как будто данных нет.

0

От адаптера:

public int getCount() { 
     return 0; 
    } 
+0

Пожалуйста, объясните ** почему ** это проблема для ОП и что он должен сделать, чтобы исправить это. Тогда это будет ответ. – DavidPostill

+0

Я подумал, что это само собой разумеется. Этот метод должен возвращать количество просмотров (строк) в списке. Обычно что-то вроде 'return options.size' или' return options.length'. Но в случае OP он использует класс CategoryViewHolder и повторно использует некоторые представления (?), Поэтому он должен выяснить, сколько показов должно отображаться. – Gudin

Смежные вопросы