【发布时间】:2013-02-03 15:48:54
【问题描述】:
我有一个自定义的ArrayAdapter<Summary>,其中包含一个事件列表。 List<Summary> 中有重复值,所以我尝试将 List<Summary> 的值放入 LinkedHashSet<Summary> 但这会显示一个空白页。
如何将自定义 ArrayList 转换为 LinkedHashSet 以获取唯一数据?
Main.java:
LinkedHashSet<Summary> listToSet = new LinkedHashSet<Summary>();
final List<Summary> summaries = new ArrayList<Summary>();
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.events_summary, container, false);
.......
setListView(month, year, date_value);
summaryAdapter = new SummaryAdapter(this.getActivity().getApplicationContext(), R.layout.listview_item_row, listToSet);
calendarSummary = (ListView) v.findViewById(R.id.calendarSummary);
calendarSummary.setAdapter(summaryAdapter);
return v;
}
public void setListView(int month, int year, int dv) {
events = new HolidayEvents();
_calendar = Calendar.getInstance(Locale.getDefault());
int totalDays = _calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
for(int i = 1; i <= totalDays; i++){
if(isHoliday(i, month, year, dv))
{
date = i + " " + getMonthForInt(month-1) + " " + year;
for (Event event : events.eventDetails(this, month, i))
{
summaries.add(new Summary(date, event.eventdetails));
listToSet.addAll(summaries);
}
}
}
}
ArrayAdapter.java:
public class SummaryAdapter extends ArrayAdapter<Summary>{
Context context;
int layoutResourceId;
LayoutInflater mInflater;
LinkedHashSet<Summary> list = null;
List<Summary> data = null;
public SummaryAdapter(Context context, int layoutResourceId, LinkedHashSet<Summary> summaries) {
super(context, layoutResourceId);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.list = summaries;
data = new ArrayList<Summary>(list); //converting LinkedHashSet to List
mInflater = LayoutInflater.from(context);
}
....rest of the code retrieving data by using data.get(position) ...
【问题讨论】:
-
1.您的代码中有语法错误(在 foreach 中)。 2. 为什么要在
ArrayList中添加Summary,然后将whole 列表添加到LinkedHashSet? -
@nkr,1. 我更正了错误。它只在代码中。 2、
Summary要怎么加到LinkedHashSet上? -
Summary summary = new Summary(...); summaries.add(summary); listToSet.add(summary); -
listToSet.add(summary);给出add不适用于Summary的错误 -
@输入。你的问题的解决方案是什么?问题出在哪里?我的回答有帮助吗?
标签: java android arraylist linkedhashset