无法在列表视图中添加分隔符

时间:2011-11-22 09:49:05

标签: listview android-layout list-separator

这是我的代码

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.email_list_main);

        emailResults = new ArrayList<GetEmailFromDatabase>();

        //int[] colors = {0,0xFFFF0000,0};
        //getListView().setDivider(new GradientDrawable(Orientation.RIGHT_LEFT, colors));
        //getListView().setDividerHeight(2);

        emailListFeedAdapter = new EmailListFeedAdapter(this, R.layout.email_listview_row, emailResults);
        setListAdapter(this.emailListFeedAdapter);

        getResults();
        if(emailResults != null && emailResults.size() > -1){
            emailListFeedAdapter.notifyDataSetChanged();
        for(int i=0;i< emailResults.size();i++){
            try {

我在这里收到电子邮件发送日期

                emailListFeedAdapter.add( emailResults.get(i));

                datetime_text1 = emailResults.get(i).getDate();
                formatter1 = new SimpleDateFormat();
                formatter1 = DateFormat.getDateInstance((DateFormat.MEDIUM));

                Calendar currentDate1 = Calendar.getInstance();

                Item_Date1 = formatter1.parse(datetime_text1);
                current_Date1 = formatter1.format(currentDate1.getTime());
                current_System_Date1 = formatter1.parse(current_Date1);

                currentDate1.add(Calendar.DATE, -1);

                yesterdaydate = formatter1.format(currentDate1.getTime());
                yeaterday_Date = formatter1.parse(yesterdaydate);

                currentDate1.add(Calendar.DATE, -2);

                threeDaysback = formatter1.format(currentDate1.getTime());
                Three_Days_Back = formatter1.parse(threeDaysback);

这里我将当前日期与列表视图项目日期进行比较,这是我的问题,日期是匹配的,但它没有添加我在很多方面尝试的分隔符,但没有任何工作,分隔符的代码是下面的。

                if(Item_Date.compareTo(current_System_Date)==0){
                    if(index1){

                       emailListFeedAdapter.addSeparatorItem("SEPARATOR");
                       //i--;
                       index1=false;
                    }


                }
                else if(yeaterday_Date.compareTo(Item_Date1)==0){
                    if(index2){
                       emailListFeedAdapter.addSeparatorItem("SEPARATOR");
                       //i--;
                       index2 = false;
                    }

                }
                else if(Item_Date1.compareTo(Three_Days_Back)==0){
                    if(index3){
                       emailListFeedAdapter.addSeparatorItem("SEPARATOR");
                       //i--;
                       index3 = false;
                    }

                }
                } catch (ParseException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
        }
     }
}

在EmailListFeedAdapter中

     private TreeSet<Integer> mSeparatorsSet = new TreeSet<Integer>();
     public void addSeparatorItem(final String item) {
         //itemss.add(emailResults.get(0));
            // save separator position
            mSeparatorsSet.add(itemss.size() - 1);
            notifyDataSetChanged();
        }
    @Override
    public int getItemViewType(int position) {
         return mSeparatorsSet.contains(position) ? TYPE_SEPARATOR : TYPE_ITEM;
       }
         holder = new ViewHolder();
        switch (type) {

            case TYPE_ITEM:
                 emailView= inflater.inflate(R.layout.email_listview_row, null);

                break;
            case TYPE_SEPARATOR:
                 emailView= inflater.inflate(R.layout.item2, null);
                 holder.textView = (TextView)emailView.findViewById(R.id.textSeparator);
                 emailView.setTag(holder);
                 holder.textView.setText("SEPARATOR");
                break;
        }

这是ViewHolder类

       public static class ViewHolder {
        public TextView textView;
    }

如果有人知道那么请告诉我我做错了什么。

感谢名单

1 个答案:

答案 0 :(得分:2)

我解决了这个问题,采取另一个xml布局,在这个xml布局中每个东西应该是相同的,但是在这个布局示例文本视图中添加另一个视图并用不同的名称保存它,现在当你想要添加分隔符时你必须膨胀这种布局而不是常规布局你正在膨胀。请记住,当您对此布局进行充气时,它将取代适配器中的项目,因此您跳过该项目需要返回到阵列中的该位置并在列表视图中显示该数据。