自定义ListView适配器不显示任何结果

时间:2015-03-23 22:53:22

标签: android listview baseadapter

我正在使用ListFragment并通过从BaseAdapter扩展来准备自定义ListView适配器,我调用了在Fragment中设置适配器的方法,但Listview没有显示任何内容。 下面是我的自定义适配器和ListFragment类:

适配器:

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()));
    }
}

2 个答案:

答案 0 :(得分:0)

从您的适配器:

public int getCount() {
        return 0;
    }

答案 1 :(得分:0)

getCount()方法返回零。这将导致ListView表现得好像没有数据。