Skip to content

Commit

Permalink
现在可以下载公告中的附件了
Browse files Browse the repository at this point in the history
  • Loading branch information
cbwang2016 committed Dec 3, 2018
1 parent 4f4899a commit 82eba83
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -303,6 +303,7 @@ protected void onPostExecute(String message) {
Toast.makeText(getApplicationContext(), "File downloaded at: " + message, Toast.LENGTH_LONG).show();

openFile(message);
finish();
}
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
package edu_cn.pku.course.adapter;


import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.text.Html;
import android.text.SpannableStringBuilder;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.text.style.URLSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
Expand All @@ -13,14 +20,18 @@
import java.util.ArrayList;

import edu_cn.pku.course.activities.R;
import edu_cn.pku.course.activities.WebViewActivity;
import edu_cn.pku.course.fragments.AnnouncementBodyFragment;
import edu_cn.pku.course.fragments.AnnouncementListFragment;

public class AnnouncementBodyAdapter extends RecyclerView.Adapter<AnnouncementBodyAdapter.RecyclerViewHolder> {

private ArrayList<AnnouncementListFragment.AnnouncementInfo> announcementBodyList;
private AnnouncementBodyFragment mContext;

public AnnouncementBodyAdapter(ArrayList<AnnouncementListFragment.AnnouncementInfo> announcementBodyList) {
public AnnouncementBodyAdapter(ArrayList<AnnouncementListFragment.AnnouncementInfo> announcementBodyList, AnnouncementBodyFragment context) {
this.announcementBodyList = announcementBodyList;
mContext = context;
}

public void updateList(ArrayList<AnnouncementListFragment.AnnouncementInfo> announcementBodyList) {
Expand All @@ -42,12 +53,49 @@ public void onBindViewHolder(@NonNull final RecyclerViewHolder holder, final int
holder.announcement_date_str.setText(announcementBodyList.get(holder.getAdapterPosition()).getAnnouncementDate());

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
holder.announcement_contents.setText(Html.fromHtml(announcementBodyList.get(holder.getAdapterPosition()).getContents(), Html.FROM_HTML_MODE_COMPACT));
// holder.announcement_contents.setText(Html.fromHtml(announcementBodyList.get(holder.getAdapterPosition()).getContents(), Html.FROM_HTML_MODE_COMPACT));
holder.announcement_author.setText(Html.fromHtml(announcementBodyList.get(holder.getAdapterPosition()).getAuthorInfo(), Html.FROM_HTML_MODE_COMPACT));
} else {
holder.announcement_contents.setText(Html.fromHtml(announcementBodyList.get(holder.getAdapterPosition()).getContents()));
// holder.announcement_contents.setText(Html.fromHtml(announcementBodyList.get(holder.getAdapterPosition()).getContents()));
holder.announcement_author.setText(Html.fromHtml(announcementBodyList.get(holder.getAdapterPosition()).getAuthorInfo()));
}
setTextViewHTML(holder.announcement_contents, announcementBodyList.get(holder.getAdapterPosition()).getContents());
}

private void makeLinkClickable(SpannableStringBuilder strBuilder, final URLSpan span) {
int start = strBuilder.getSpanStart(span);
int end = strBuilder.getSpanEnd(span);
int flags = strBuilder.getSpanFlags(span);
ClickableSpan clickable = new ClickableSpan() {
public void onClick(@NonNull View view) {
String url = span.getURL();
if (url.startsWith("http://course.pku.edu.cn")) {
Intent intent = new Intent(mContext.getActivity(), WebViewActivity.class);
Activity activity = mContext.getActivity();
if (activity != null) {
intent.putExtra("Title", "正在打开链接...");
intent.putExtra("WebViewUrl", url.replaceFirst("http://course.pku.edu.cn", ""));
}
mContext.startActivity(intent);
} else {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
mContext.startActivity(browserIntent);
}
}
};
strBuilder.setSpan(clickable, start, end, flags);
strBuilder.removeSpan(span);
}

private void setTextViewHTML(TextView text, String html) {
CharSequence sequence = Html.fromHtml(html.replaceAll("\n", ""));
SpannableStringBuilder strBuilder = new SpannableStringBuilder(sequence);
URLSpan[] urls = strBuilder.getSpans(0, sequence.length(), URLSpan.class);
for (URLSpan span : urls) {
makeLinkClickable(strBuilder, span);
}
text.setText(strBuilder);
text.setMovementMethod(LinkMovementMethod.getInstance());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
announcementId = "";
return linearLayout;
}
adapter = new AnnouncementBodyAdapter(new ArrayList<AnnouncementListFragment.AnnouncementInfo>());
adapter = new AnnouncementBodyAdapter(new ArrayList<AnnouncementListFragment.AnnouncementInfo>(), this);
mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
mRecyclerView.setAdapter(adapter);
announcementId = getActivity().getIntent().getStringExtra("AnnouncementId");
Expand Down

0 comments on commit 82eba83

Please sign in to comment.