Невозможно добавить разделитель в виде списка
Это мой код
@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, но добавив еще один дополнительный вид в этом примере макета Текстовое представление и сохраните его под другим именем, теперь, когда вам захочется добавить разделитель, вместо этого нужно накачать этот макет из обычного макета вы надуваете. помните, что когда вы раздуваете этот макет, он занимает место элемента в вашем адаптере, поэтому, чтобы пропустить этот элемент, вам нужно вернуться к этой позиции в массиве и отобразить эти данные в списке.