Show "No item available" on announcement and assignment

This commit is contained in:
Caesar2011
2018-10-30 03:05:16 +01:00
parent 70072c6605
commit 4fb969479e
2 changed files with 104 additions and 78 deletions

View File

@@ -21,8 +21,9 @@ import de.sebse.fuplanner.tools.Regex;
import de.sebse.fuplanner.tools.UtilsDate; import de.sebse.fuplanner.tools.UtilsDate;
import de.sebse.fuplanner.tools.logging.Logger; import de.sebse.fuplanner.tools.logging.Logger;
import de.sebse.fuplanner.tools.ui.AnnouncementViewHolder; import de.sebse.fuplanner.tools.ui.AnnouncementViewHolder;
import de.sebse.fuplanner.tools.ui.CustomViewHolder;
class ModDetailAnnounceAdapter extends RecyclerView.Adapter<AnnouncementViewHolder> { class ModDetailAnnounceAdapter extends RecyclerView.Adapter<CustomViewHolder> {
@Nullable private Modules.Module mModule = null; @Nullable private Modules.Module mModule = null;
private Logger log = new Logger(this); private Logger log = new Logger(this);
@@ -37,62 +38,74 @@ class ModDetailAnnounceAdapter extends RecyclerView.Adapter<AnnouncementViewHold
} }
@NonNull @NonNull
public AnnouncementViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) { public CustomViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
View view = LayoutInflater.from(viewGroup.getContext()) if (viewType == 0) {
.inflate(R.layout.list_announcement_items, viewGroup, false); View view = LayoutInflater.from(viewGroup.getContext())
return new AnnouncementViewHolder(view); .inflate(R.layout.list_announcement_items, viewGroup, false);
return new AnnouncementViewHolder(view);
} else {
View view = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.list_all_no_items, viewGroup, false);
return new CustomViewHolder(view);
}
} }
@Override @Override
public void onBindViewHolder(@NonNull AnnouncementViewHolder holder, int position) { public void onBindViewHolder(@NonNull CustomViewHolder customHolder, int position) {
holder.reset(); if (customHolder instanceof AnnouncementViewHolder) {
Announcement item = getAnnouncement(position); AnnouncementViewHolder holder = (AnnouncementViewHolder) customHolder;
holder.mTitle.setText(item.getTitle()); holder.reset();
holder.mSubTitle.setText(UtilsDate.getModifiedDateTime(holder.mView.getContext(), item.getCreatedOn())); Announcement item = getAnnouncement(position);
holder.mTitle.setText(item.getTitle());
holder.mSubTitle.setText(UtilsDate.getModifiedDateTime(holder.mView.getContext(), item.getCreatedOn()));
List<String> notes = item.getUrls(); List<String> notes = item.getUrls();
if (!notes.isEmpty()) { if (!notes.isEmpty()) {
holder.mTagGroup.setVisibility(View.VISIBLE); holder.mTagGroup.setVisibility(View.VISIBLE);
for (int i = 0, notesSize = notes.size(); i < notesSize; i++) { for (int i = 0, notesSize = notes.size(); i < notesSize; i++) {
String name; String name;
try { try {
name = URLDecoder.decode(Regex.regex("/([^/]*)$", notes.get(i)), "UTF-8"); name = URLDecoder.decode(Regex.regex("/([^/]*)$", notes.get(i)), "UTF-8");
} catch (NoSuchFieldException e) { } catch (NoSuchFieldException e) {
e.printStackTrace(); e.printStackTrace();
name = holder.mView.getResources().getString(R.string.attachment_nr, i); name = holder.mView.getResources().getString(R.string.attachment_nr, i);
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
e.printStackTrace(); e.printStackTrace();
name = holder.mView.getResources().getString(R.string.attachment_nr, i); name = holder.mView.getResources().getString(R.string.attachment_nr, i);
}
Tag tag = new Tag(name);
tag.id = i;
tag.layoutColor = ContextCompat.getColor(holder.mView.getContext(), R.color.colorFUBlue);
holder.mTagGroup.addTag(tag);
log.d(notes.get(i));
} }
Tag tag = new Tag(name); holder.mTagGroup.setOnTagClickListener((tag, i) -> {
tag.id = i; String s = notes.get(i);
tag.layoutColor = ContextCompat.getColor(holder.mView.getContext(), R.color.colorFUBlue); if (s != null) {
holder.mTagGroup.addTag(tag); log.d("Download", s);
log.d(notes.get(i)); }
});
} else {
holder.mTagGroup.setVisibility(View.GONE);
} }
holder.mTagGroup.setOnTagClickListener((tag, i) -> { holder.mNotes.setText(item.getBody());
String s = notes.get(i);
if (s != null) {
log.d("Download", s);
}
});
} else {
holder.mTagGroup.setVisibility(View.GONE);
} }
holder.mNotes.setText(item.getBody());
} }
@Override @Override
public int getItemCount() { public int getItemCount() {
if (mModule != null && mModule.announcements != null) if (mModule != null && mModule.announcements != null)
return mModule.announcements.size(); return Math.max(mModule.announcements.size(), 1);
else else
return 0; return 0;
} }
@Override @Override
public int getItemViewType(int position) { public int getItemViewType(int position) {
return 0; if (mModule != null && mModule.announcements != null && mModule.announcements.size() == 0)
return 1;
else
return 0;
} }
private Announcement getAnnouncement(int index) { private Announcement getAnnouncement(int index) {

View File

@@ -21,8 +21,9 @@ import de.sebse.fuplanner.tools.Regex;
import de.sebse.fuplanner.tools.UtilsDate; import de.sebse.fuplanner.tools.UtilsDate;
import de.sebse.fuplanner.tools.logging.Logger; import de.sebse.fuplanner.tools.logging.Logger;
import de.sebse.fuplanner.tools.ui.AnnouncementViewHolder; import de.sebse.fuplanner.tools.ui.AnnouncementViewHolder;
import de.sebse.fuplanner.tools.ui.CustomViewHolder;
class ModDetailAssignmentAdapter extends RecyclerView.Adapter<AnnouncementViewHolder> { class ModDetailAssignmentAdapter extends RecyclerView.Adapter<CustomViewHolder> {
@Nullable private Modules.Module mModule = null; @Nullable private Modules.Module mModule = null;
private Logger log = new Logger(this); private Logger log = new Logger(this);
@@ -37,62 +38,74 @@ class ModDetailAssignmentAdapter extends RecyclerView.Adapter<AnnouncementViewHo
} }
@NonNull @NonNull
public AnnouncementViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) { public CustomViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
View view = LayoutInflater.from(viewGroup.getContext()) if (viewType == 0) {
.inflate(R.layout.list_announcement_items, viewGroup, false); View view = LayoutInflater.from(viewGroup.getContext())
return new AnnouncementViewHolder(view); .inflate(R.layout.list_announcement_items, viewGroup, false);
return new AnnouncementViewHolder(view);
} else {
View view = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.list_all_no_items, viewGroup, false);
return new CustomViewHolder(view);
}
} }
@Override @Override
public void onBindViewHolder(@NonNull AnnouncementViewHolder holder, int position) { public void onBindViewHolder(@NonNull CustomViewHolder customHolder, int position) {
holder.reset(); if (customHolder instanceof AnnouncementViewHolder) {
Assignment item = getAssignment(position); AnnouncementViewHolder holder = (AnnouncementViewHolder) customHolder;
holder.mTitle.setText(item.getTitle()); holder.reset();
holder.mSubTitle.setText(UtilsDate.getModifiedDateTime(holder.mView.getContext(), item.getDueDate())); Assignment item = getAssignment(position);
holder.mTitle.setText(item.getTitle());
holder.mSubTitle.setText(UtilsDate.getModifiedDateTime(holder.mView.getContext(), item.getDueDate()));
List<String> notes = item.getUrls(); List<String> notes = item.getUrls();
if (!notes.isEmpty()) { if (!notes.isEmpty()) {
holder.mTagGroup.setVisibility(View.VISIBLE); holder.mTagGroup.setVisibility(View.VISIBLE);
for (int i = 0, notesSize = notes.size(); i < notesSize; i++) { for (int i = 0, notesSize = notes.size(); i < notesSize; i++) {
String name; String name;
try { try {
name = URLDecoder.decode(Regex.regex("/([^/]*)$", notes.get(i)), "UTF-8"); name = URLDecoder.decode(Regex.regex("/([^/]*)$", notes.get(i)), "UTF-8");
} catch (NoSuchFieldException e) { } catch (NoSuchFieldException e) {
e.printStackTrace(); e.printStackTrace();
name = holder.mView.getResources().getString(R.string.attachment_nr, i); name = holder.mView.getResources().getString(R.string.attachment_nr, i);
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
e.printStackTrace(); e.printStackTrace();
name = holder.mView.getResources().getString(R.string.attachment_nr, i); name = holder.mView.getResources().getString(R.string.attachment_nr, i);
}
Tag tag = new Tag(name);
tag.id = i;
tag.layoutColor = ContextCompat.getColor(holder.mView.getContext(), R.color.colorFUBlue);
holder.mTagGroup.addTag(tag);
log.d(notes.get(i));
} }
Tag tag = new Tag(name); holder.mTagGroup.setOnTagClickListener((tag, i) -> {
tag.id = i; String s = notes.get(i);
tag.layoutColor = ContextCompat.getColor(holder.mView.getContext(), R.color.colorFUBlue); if (s != null) {
holder.mTagGroup.addTag(tag); log.d("Download", s);
log.d(notes.get(i)); }
});
} else {
holder.mTagGroup.setVisibility(View.GONE);
} }
holder.mTagGroup.setOnTagClickListener((tag, i) -> { holder.mNotes.setText(item.getInstructions());
String s = notes.get(i);
if (s != null) {
log.d("Download", s);
}
});
} else {
holder.mTagGroup.setVisibility(View.GONE);
} }
holder.mNotes.setText(item.getInstructions());
} }
@Override @Override
public int getItemCount() { public int getItemCount() {
if (mModule != null && mModule.assignments != null) if (mModule != null && mModule.assignments != null)
return mModule.assignments.size(); return Math.max(mModule.assignments.size(), 1);
else else
return 0; return 0;
} }
@Override @Override
public int getItemViewType(int position) { public int getItemViewType(int position) {
return 0; if (mModule != null && mModule.assignments != null && mModule.assignments.size() == 0)
return 1;
else
return 0;
} }
private Assignment getAssignment(int index) { private Assignment getAssignment(int index) {