首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >填充Sticky Listview Android

填充Sticky Listview Android
EN

Stack Overflow用户
提问于 2015-01-08 13:45:54
回答 1查看 56关注 0票数 0

来自mCalendarModel的数据用于通过适配器填充下面的列表视图。问题是必须为与该年对应的所有数据显示一个月。例如:

代码语言:javascript
复制
*Current result: 
 Header -> January 
  Item -> Series St Pierre

 Header -> January 
  Item -> Series St Pierre

 Header -> January 
  Item -> Series St Pierre

 Header -> February
  Item -> Series St Aubin 


Expected Result:

    Header -> January 
    Item -> Series St Pierre
    Item -> Series St Pierre
    Item -> Series St Pierre
    Item -> Series St Pierre
    Item -> Series St Pierre
    Item -> Series St Pierre
    Item -> Series St Pierre
    Item -> Series St Pierre
    Item -> Series St Pierre

    Header -> February
    Item -> Series St Aubin 
    ...*

有没有办法只显示预期的结果?

代码语言:javascript
复制
    *mCalendarModel = new ArrayList<CalendarModel>();
    mCalendarModel.add(new CalendarModel("JANVIER", "Dimanche 2/01", "Series St Pierre", "22 km", "$1000", "course_trail","1","1"));
    mCalendarModel.add(new CalendarModel("JANVIER", "Dimanche 2/01", "Series St Pierre", "22 km", "$1000", "course_trail","1","1"));
    mCalendarModel.add(new CalendarModel("JANVIER", "Dimanche 2/01", "Series St Pierre", "22 km", "$1000", "course_trail","1","1"));
    mCalendarModel.add(new CalendarModel("JANVIER", "Dimanche 2/01", "Series St Pierre", "22 km", "$1000", "course_trail","1","1"));
    mCalendarModel.add(new CalendarModel("JANVIER", "Dimanche 2/01", "Series St Pierre", "22 km", "$1000", "course_trail","1","1"));
    mCalendarModel.add(new CalendarModel("JANVIER", "Dimanche 2/01", "Series St Pierre", "22 km", "$1000", "course_trail","1","1"));
    mCalendarModel.add(new CalendarModel("JANVIER", "Dimanche 2/01", "Series St Pierre", "22 km", "$1000", "course_trail","1","1"));
    mCalendarModel.add(new CalendarModel("JANVIER", "Dimanche 2/01", "Series St Pierre", "22 km", "$1000", "course_trail","1","1"));
    mCalendarModel.add(new CalendarModel("JANVIER", "Dimanche 2/01", "Series St Pierre", "22 km", "$1000", "course_trail","1","1"));
    mCalendarModel.add(new CalendarModel("JANVIER", "Dimanche 2/01", "Series St Pierre", "22 km", "$1000", "course_trail","1","1"));
    mCalendarModel.add(new CalendarModel("JANVIER", "Samedi 3/01", "Series St Aubin", "22 km", "$1000", "course_route","1","1"));
    mCalendarModel.add(new CalendarModel("JANVIER", "Samedi 2/01", "Series St Aubin", "22 km", "$1000", "course_route","1","1"));
    mCalendarModel.add(new CalendarModel("JANVIER", "Samedi 2/01", "Series St Aubin", "22 km", "$1000", "course_route","2","1"));
    mCalendarModel.add(new CalendarModel("JANVIER", "Samedi 2/01", "Series St Aubin", "22 km", "$1000", "course_route","1","1"));
    mCalendarModel.add(new CalendarModel("FEVRIER", "Samedi 2/01", "Series St Aubin", "22 km", "$1000", "course_route","2","2"));*






public void populateHeaderList(){

    SectionAdapter sectionAdapter = new SectionAdapter(getActivity(), mCalendarModel,mLayoutInflator){

        private ViewHeaderHolder headHolder;

        @Override
        public int numberOfSections() {
            return mCalendarModel.size();
        }

        @Override
        public int numberOfRows(int section) {
            return 1;
        }

        @Override
        public String getRowItem(int section, int row) {
            return null;
        }

        @Override
        public boolean hasSectionHeaderView(int section) {
            return true;
        }


        @Override
        public int getSectionHeaderViewTypeCount() {
            return 2;
        }

        @Override
        public int getSectionHeaderItemViewType(int section) {
            return section % 2;
        }

        @SuppressLint("InflateParams") 
        @Override
        public View getSectionHeaderView(int section, View convertView, ViewGroup parent) {
            View vi = convertView;

            if (convertView == null) {

                vi = mLayoutInflator.inflate(R.layout.header_row_field, null);

                headHolder = new ViewHeaderHolder();

                headHolder.mTextHeader = (Button) vi.findViewById(R.id.mTextHeader);

                vi.setTag(headHolder);

            } else
                headHolder = (ViewHeaderHolder) vi.getTag();

            headHolder.mTextHeader.setText(mCalendarModel.get(section).month);
            headHolder.mTextHeader.setTextColor(getResources().getColor(R.color.calendrier_vert));

            return vi;

        }

        @Override
        public void onRowItemClick(AdapterView<?> parent, View view, int section, int row, long id) {
            super.onRowItemClick(parent, view, section, row, id);

            Intent intentFicheCourse = new Intent (getActivity(),FicheCourse.class);
            startActivity(intentFicheCourse);
            getActivity().overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);

        }

        @SuppressLint("InflateParams") 
        @Override
        public View getRowView(int section, int row, View convertView,
                ViewGroup parent) {
            // TODO Auto-generated method stub
            View vi = convertView;

            if (convertView == null) {

                vi = mLayoutInflator.inflate(R.layout.header_row_item, null);

                holder = new ViewHolder();

                holder.mTextDate = (TextView) vi.findViewById(R.id.mTextDate);
                holder.mTextAddress = (TextView) vi.findViewById(R.id.mTextAddress);
                holder.mTextDistance = (TextView) vi.findViewById(R.id.mTextDistance);
                holder.mTextTarif = (TextView) vi.findViewById(R.id.mTextTarif);
                //holder.mLDivider= (LinearLayout) vi.findViewById(R.id.mLDivider);

                vi.setTag(holder);

            } else
                holder = (ViewHolder) vi.getTag();

            holder.mTextDate.setText(mCalendarModel.get(row).date);
            holder.mTextAddress.setText(mCalendarModel.get(row).title);
            holder.mTextTarif.setText(mCalendarModel.get(row).tarrif);
            holder.mTextDistance.setText(mCalendarModel.get(row).distance);

            return vi;
        }
    };

    mHeaderList.setAdapter(sectionAdapter);

}
EN

回答 1

Stack Overflow用户

发布于 2015-01-08 14:29:28

你为什么不试试可扩展的listView呢?

创建两个数组,一个用于数月,可用于填充父数组,另一个用于子数组,可用于填充子数组。

此外,您可以使父行始终处于展开状态,它将完全按您所需的方式显示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27833678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档