在列表视图中突出显示特定位置

时间:2015-10-26 05:32:00

标签: java android date android-listview baseadapter

很抱歉,如果问题似乎比正常情况长或难以理解。在我的任务中,我必须显示 listview ,它会将日期和标题显示为字符串值。我正在使用 Arraylist ,它使用模型类将数据传递给适配器。

vaccinationScheduleAdapter=new VaccinationScheduleAdapter(mActivity,DateOfBirth,VaccShdleModelArrayList);
        lstMenus.setAdapter(vaccinationScheduleAdapter);

DateOfBirth是DateValue,可以更改。VaccShdleModelArrayList的值通过模型类传递

public String getmDescription() {
    return mDescription;
}
public String getmNumberOfMonths() {
    return mNumberOfMonths;
}

listview中显示的日期将使用传递的值DateOfBirth和mNumberOfMonth来计算。计算将在Custom Adapter类中执行

NumberOfMonths = Integer.parseInt(atrNumberOfMonths);
        Calendar cal = Calendar.getInstance();
        cal.setTime(DateOfBirth);
        cal.add(Calendar.MONTH, NumberOfMonths);

例如,getmNumberOfMonths将返回1 ,3,5,7,..,然后它将添加到已通过DateOfBirth的月份。如果我通过01/08/2015,则计算后的结果将为{{1} }} 如果它不包含当前日期,我想突出显示下一个未来日期。 我设法通过对当前日期之后的日期进行排序来找到需要突出显示的位置,但问题是排序和查找仅在适配器的位置将持续时发生。请帮我这样做。长期坚持这个问题。

这是适配器类,

01/09/2015,01/10/2015,01/12/2015,01/03/2015...

如果有人可以帮助我,我将非常感激。在此先感谢。

3 个答案:

答案 0 :(得分:0)

突出显示列表位置您需要设置- (void)feedParserDidFinish:(MWFeedParser *)parser { NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"demo"]; fetchRequest.predicate = [NSPredicate predicateWithFormat:@"urloffeed = %@", self.Feedlink]; NSManagedObjectContext *context = [self managedObjectContext]; if ([[context executeFetchRequest:fetchRequest error:NULL] count] == 0) { // Create a new managed object NSManagedObject *newDevice = [NSEntityDescription insertNewObjectForEntityForName:@"demo" inManagedObjectContext:context]; [newDevice setValue:self.Name forKey:@"nameofentry"]; [newDevice setValue:self.WebsiteName forKey:@"sitename"]; [newDevice setValue:self.Feedlink forKey:@"urloffeed"]; NSError *error = nil; // Save the object to persistent store if (![context save:&error]) { NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]); } } 然后listview.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

答案 1 :(得分:0)

您可以在排序后保留一系列未来日期位置VaccinationScheduleAppoinmentModel实现compareto()。您可以查看此链接以了解[Sort ArrayList of custom Objects by property的方式。应用您的排序逻辑并从此排序列表中维护一组未来日期位置。您可以将listview选择模式设置为多个,并为您需要的位置设置选定状态。

答案 2 :(得分:0)

正如阿希尔所说,

listview.setChoiceMode(ListView.CHOICE_MODE_SINGLE); then      
listview.setSelection(int position);

执行此操作后,您需要设置要高举itemView.setSelected(true)的项目,我相信将是一个变量来判断该项目是否会被置高。 如果仍然没有解决方法,请考虑项目视图的背景是否与选择器文件一致。