android SimpleSectionAdapter从适配器显示空列表

时间:2016-03-12 13:18:44

标签: android baseadapter

我真的需要帮助调试我正在构建的这个Android应用程序。我有一个自定义适配器。当我不使用simpleSectionAdapter时,它会正确显示列表项,但是当我从适配器套件中使用SimpleSectionAdapter时,它会显示空白列表。我想根据名字在我的列表中有部分。提前谢谢。

Heres是我的适配器

public class CustomContriAdapter extends BaseAdapter implements Filterable{

List<Contributions> contributions;
LayoutInflater inflater;
Context context;
public List<Contributions> orig;


public CustomContriAdapter(Context context, List<Contributions> contributions) {
    this.contributions = contributions;
    this.context = context;
    inflater = LayoutInflater.from(this.context);
}

@Override
public int getCount() {
    return contributions.size();
}

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

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

public Filter getFilter() {
    return new Filter() {

        @Override
        protected FilterResults performFiltering(CharSequence constraint) {
            final FilterResults oReturn = new FilterResults();
            final List<Contributions> results = new ArrayList<Contributions>();
            if (orig == null)
                orig = contributions;
            if (constraint != null) {
                if (orig != null && orig.size() > 0) {
                    for (final Contributions g : orig) {
                        if (g.getContributor_name().toLowerCase()
                                .contains(constraint.toString()))
                            results.add(g);
                    }
                }
                oReturn.values = results;
            }
            return oReturn;
        }

        @SuppressWarnings("unchecked")
        @Override
        protected void publishResults(CharSequence constraint,
                                      Filter.FilterResults results) {
            contributions = (ArrayList<Contributions>) results.values;
            notifyDataSetChanged();
        }
    };
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    MyViewHolder mViewHolder;

    if (convertView == null) {
        convertView = inflater.inflate(R.layout.contri_list_item_layout, parent, false);
        mViewHolder = new MyViewHolder(convertView);
        convertView.setTag(mViewHolder);
    } else {
        mViewHolder = (MyViewHolder) convertView.getTag();
    }

    Contributions currentListData = (Contributions) getItem(position);

    mViewHolder.tvTitleName.setText(currentListData.getContributor_name());

    //date created at
    Date createdAt = currentListData.getCreated();
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    String createdDate = df.format(createdAt);

    mViewHolder.tvDescDate.setText(createdDate);

    return convertView;
}

private class MyViewHolder {
    TextView tvTitleName, tvDescDate;


    public MyViewHolder(View item) {
        tvTitleName = (TextView) item.findViewById(R.id.name_view);
        tvDescDate = (TextView) item.findViewById(R.id.contri_created_date);
    }
}

}

这是我在onCreate()

中调用它的方法
 Collections.sort(allContributions, new Comparator<Contributions>() {
        @Override
        public int compare(Contributions lhs, Contributions rhs) {
            return lhs.getContributor_name().compareTo(rhs.getContributor_name());
        }
    });
    InstantAdapter<Contributions> contribu = new InstantAdapter<Contributions>(
            this,R.layout.contri_list_item_layout, Contributions.class, allContributions);

    //wrap adapter to simple section adapter
    SimpleSectionAdapter<Contributions> sectionAdapter = new SimpleSectionAdapter<Contributions>(
            this, contribu, R.layout.section_header, R.id.section_text , new ContributionsSectionizer());

    listView.setAdapter(sectionAdapter);

这是分段器,

public class ContributionsSectionizer implements Sectionizer<Contributions> {
@Override
public String getSectionTitleForItem(Contributions contributions) {
    return contributions.getContributor_name();
}

}

和项目

protected List<Contributions> allContributions = new ArrayList<>();

0 个答案:

没有答案