Невозможно добавить разделитель в виде списка

Это мой код

@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;
    }

если кто-то знает, пожалуйста, скажите мне, где я делаю неправильно.

Thanx

1 ответ

Решение

Я решил эту проблему, взяв другой макет XML, каждая вещь должна быть такой же в этом макете XML, но добавив еще один дополнительный вид в этом примере макета Текстовое представление и сохраните его под другим именем, теперь, когда вам захочется добавить разделитель, вместо этого нужно накачать этот макет из обычного макета вы надуваете. помните, что когда вы раздуваете этот макет, он занимает место элемента в вашем адаптере, поэтому, чтобы пропустить этот элемент, вам нужно вернуться к этой позиции в массиве и отобразить эти данные в списке.

Другие вопросы по тегам