diff --git a/README.md b/README.md deleted file mode 100644 index 042aed5a3ec78b989b432fd0686bb58202fe3003..0000000000000000000000000000000000000000 --- a/README.md +++ /dev/null @@ -1,6 +0,0 @@ -src:源代码文件; - -document:文档文件; - -report:报告文件; - diff --git a/document/README.md "b/document/\345\212\237\350\203\275\345\256\214\346\210\220\346\200\273\347\273\223/README.md" similarity index 100% rename from document/README.md rename to "document/\345\212\237\350\203\275\345\256\214\346\210\220\346\200\273\347\273\223/README.md" diff --git a/document/imgs/geren.gif "b/document/\345\212\237\350\203\275\345\256\214\346\210\220\346\200\273\347\273\223/imgs/geren.gif" similarity index 100% rename from document/imgs/geren.gif rename to "document/\345\212\237\350\203\275\345\256\214\346\210\220\346\200\273\347\273\223/imgs/geren.gif" diff --git a/document/imgs/login.gif "b/document/\345\212\237\350\203\275\345\256\214\346\210\220\346\200\273\347\273\223/imgs/login.gif" similarity index 100% rename from document/imgs/login.gif rename to "document/\345\212\237\350\203\275\345\256\214\346\210\220\346\200\273\347\273\223/imgs/login.gif" diff --git a/document/imgs/look_detail.gif "b/document/\345\212\237\350\203\275\345\256\214\346\210\220\346\200\273\347\273\223/imgs/look_detail.gif" similarity index 100% rename from document/imgs/look_detail.gif rename to "document/\345\212\237\350\203\275\345\256\214\346\210\220\346\200\273\347\273\223/imgs/look_detail.gif" diff --git a/document/imgs/post_news.gif "b/document/\345\212\237\350\203\275\345\256\214\346\210\220\346\200\273\347\273\223/imgs/post_news.gif" similarity index 100% rename from document/imgs/post_news.gif rename to "document/\345\212\237\350\203\275\345\256\214\346\210\220\346\200\273\347\273\223/imgs/post_news.gif" diff --git a/document/imgs/post_page.gif "b/document/\345\212\237\350\203\275\345\256\214\346\210\220\346\200\273\347\273\223/imgs/post_page.gif" similarity index 100% rename from document/imgs/post_page.gif rename to "document/\345\212\237\350\203\275\345\256\214\346\210\220\346\200\273\347\273\223/imgs/post_page.gif" diff --git "a/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/User.png" "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/User.png" new file mode 100644 index 0000000000000000000000000000000000000000..fee170385e8c940fd1b860ec32fe0e17812b052a Binary files /dev/null and "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/User.png" differ diff --git "a/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/edit_news.png" "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/edit_news.png" new file mode 100644 index 0000000000000000000000000000000000000000..ade7477cac3997e6f23402e9ca59c557db6d1f9e Binary files /dev/null and "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/edit_news.png" differ diff --git "a/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/edit_page.png" "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/edit_page.png" new file mode 100644 index 0000000000000000000000000000000000000000..a291b6929cac93450001d6118e1a3f7879095f85 Binary files /dev/null and "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/edit_page.png" differ diff --git "a/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/fragment_news.png" "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/fragment_news.png" new file mode 100644 index 0000000000000000000000000000000000000000..ccfa4c13afa3b3528d60c5e3de5b44761ee7578f Binary files /dev/null and "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/fragment_news.png" differ diff --git "a/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/news_four.png" "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/news_four.png" new file mode 100644 index 0000000000000000000000000000000000000000..95cf4b4340fbe0b82a5bcb7cb5e7a8ff7b8ec33b Binary files /dev/null and "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/news_four.png" differ diff --git "a/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/news_image.png" "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/news_image.png" new file mode 100644 index 0000000000000000000000000000000000000000..3ff30701b9bee6202b84c4457d10b2caeceba7d0 Binary files /dev/null and "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/news_image.png" differ diff --git "a/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/news_noimage.png" "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/news_noimage.png" new file mode 100644 index 0000000000000000000000000000000000000000..025cbeb94cc2aa025ee7cbea0e0d8aeccf3e4ccc Binary files /dev/null and "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/news_noimage.png" differ diff --git "a/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/news_six.png" "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/news_six.png" new file mode 100644 index 0000000000000000000000000000000000000000..92978ef06ac2134804572b302f78276e39098f7d Binary files /dev/null and "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/news_six.png" differ diff --git "a/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/page.png" "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/page.png" new file mode 100644 index 0000000000000000000000000000000000000000..7527b0c3e5abb3ab3fd754817e79cdced2abdf38 Binary files /dev/null and "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/page.png" differ diff --git "a/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/page_new_image.png" "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/page_new_image.png" new file mode 100644 index 0000000000000000000000000000000000000000..d3d1d42689ef2df7895a9aba9f3631da5a17dbd9 Binary files /dev/null and "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/page_new_image.png" differ diff --git "a/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/page_one_image.png" "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/page_one_image.png" new file mode 100644 index 0000000000000000000000000000000000000000..178de515118adbd82389f84facb0c36e43416caf Binary files /dev/null and "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/page_one_image.png" differ diff --git "a/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/rv.png" "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/rv.png" new file mode 100644 index 0000000000000000000000000000000000000000..7f3efc160f8334fefd6f5d9206f008281097d97a Binary files /dev/null and "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/rv.png" differ diff --git "a/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/video.png" "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/video.png" new file mode 100644 index 0000000000000000000000000000000000000000..d61c4a9780121d867a50f9d6152ceb93bd349f78 Binary files /dev/null and "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/img/video.png" differ diff --git "a/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/litpal\346\225\260\346\215\256\345\272\223\350\256\277\351\227\256\345\221\275\344\273\244\347\244\272\344\276\213.md" "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/litpal\346\225\260\346\215\256\345\272\223\350\256\277\351\227\256\345\221\275\344\273\244\347\244\272\344\276\213.md" new file mode 100644 index 0000000000000000000000000000000000000000..3d9f20e486f912c0d082594c045fca630d1ed293 --- /dev/null +++ "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/litpal\346\225\260\346\215\256\345\272\223\350\256\277\351\227\256\345\221\275\344\273\244\347\244\272\344\276\213.md" @@ -0,0 +1,14 @@ + + +``` bash +cd C:\Users\meng-\AppData\Local\Android\Sdk\platform-tools (中间有些路径根据你自己的电脑换) +adb shell +su +cd data/data/com.example.mad_final +cd databases +sqlite3 data.db +.table +select * from new; +.mode line +select * from page; +``` \ No newline at end of file diff --git "a/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/structure.tex" "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/structure.tex" new file mode 100644 index 0000000000000000000000000000000000000000..0c206724bf5a002d6835d12fbae45f696ffbd1e2 --- /dev/null +++ "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/structure.tex" @@ -0,0 +1,116 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Cleese Assignment +% Structure Specification File +% Version 1.0 (27/5/2018) +% +% This template originates from: +% http://www.LaTeXTemplates.com +% +% Author: +% Vel (vel@LaTeXTemplates.com) +% +% License: +% CC BY-NC-SA 3.0 (http://creativecommons.org/licenses/by-nc-sa/3.0/) +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%---------------------------------------------------------------------------------------- +% PACKAGES AND OTHER DOCUMENT CONFIGURATIONS +%---------------------------------------------------------------------------------------- + +\usepackage{tikz} +\usepackage{lastpage} % Required to determine the last page number for the footer + +\usepackage{ctex} + +\usepackage{graphicx} % Required to insert images + +\setlength\parindent{0pt} % Removes all indentation from paragraphs + +\usepackage[most]{tcolorbox} % Required for boxes that split across pages + +\usepackage{booktabs} % Required for better horizontal rules in tables + +\usepackage{listings} % Required for insertion of code + +\usepackage{etoolbox} % Required for if statements + + + + +%---------------------------------------------------------------------------------------- +% MARGINS +%---------------------------------------------------------------------------------------- + +\usepackage{geometry} % Required for adjusting page dimensions and margins + +\geometry{ + paper=a4paper, % Change to letterpaper for US letter + top=3cm, % Top margin + bottom=3cm, % Bottom margin + left=2.5cm, % Left margin + right=2.5cm, % Right margin + headheight=14pt, % Header height + footskip=1.4cm, % Space from the bottom margin to the baseline of the footer + headsep=1.2cm, % Space from the top margin to the baseline of the header + %showframe, % Uncomment to show how the type block is set on the page +} + +%---------------------------------------------------------------------------------------- +% FONT +%---------------------------------------------------------------------------------------- +\usepackage{fontspec} +\usepackage[utf8]{inputenc} % Required for inputting international characters +\usepackage[T1]{fontenc} % Output font encoding for international characters + +%\usepackage[sfdefault,light]{roboto} % Use the Roboto font + +%---------------------------------------------------------------------------------------- +% HEADERS AND FOOTERS +%---------------------------------------------------------------------------------------- +\usepackage{abstract} + +\renewcommand{\abstractnamefont}{\Large\bfseries} +\renewcommand{\abstractname}{问题} + + +\usepackage{fancyhdr} % Required for customising headers and footers + +\pagestyle{fancy} % Enable custom headers and footers + +\lhead{} % Left header; output the instructor in brackets if one was set +\chead{\small SUN YAT-SEN UNIVERSITY} % Centre header +\rhead{} % Right header; output the author name if one was set, otherwise the due date if that was set + +\lfoot{} % Left footer +\cfoot{\small Page\ \thepage\ of\ \pageref{LastPage}} % Centre footer +\rfoot{} % Right footer + +\renewcommand\headrulewidth{0.5pt} % Thickness of the header rule + +%---------------------------------------------------------------------------------------- +% MODIFY SECTION STYLES +%---------------------------------------------------------------------------------------- + +\usepackage{titlesec} % Required for modifying sections + +%---------------------------------------------------------------------------------------- +% TITLE PAGE +%---------------------------------------------------------------------------------------- + +\title{ + \normalfont\normalsize + \textsc{SUN YAT-SEN UNIVERSITY, SCHOOL OF COMPUTER SCIENCE AND ENGINEERING}\\ % Your university, school and/or department name(s) + \vspace{25pt} % Whitespace + \rule{\linewidth}{3pt}\\ % Thin top horizontal rule + \vspace{20pt} % Whitespace + {\huge \textbf{技术选型文档}}\\ % The assignment title + \vspace{12pt} % Whitespace + \rule{\linewidth}{2pt}\\ % Thick bottom horizontal rule + \vspace{12pt} % Whitespace +} + +\author{\LARGE ADC开发小组 +} % Your name + +\date{\normalsize\today} % Today's date (\today) or a custom date \ No newline at end of file diff --git "a/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/student_template.pdf" "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/student_template.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..7e0ccce7f818997bc5a9abcea88cd3b0e7cdc602 Binary files /dev/null and "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/student_template.pdf" differ diff --git "a/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/student_template.tex" "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/student_template.tex" new file mode 100644 index 0000000000000000000000000000000000000000..7dd12c9ae02a4837de477b8ff2b6617d975d5899 --- /dev/null +++ "b/document/\346\212\200\346\234\257\351\200\211\345\236\213\346\226\207\346\241\243/student_template.tex" @@ -0,0 +1,189 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Cleese Assignment (For Students) +% LaTeX Template +% Version 2.0 (27/5/2018) +% +% This template originates from: +% http://www.LaTeXTemplates.com +% +% Author: +% Vel (vel@LaTeXTemplates.com) +% +% License: +% CC BY-NC-SA 3.0 (http://creativecommons.org/licenses/by-nc-sa/3.0/) +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%---------------------------------------------------------------------------------------- +% PACKAGES AND OTHER DOCUMENT CONFIGURATIONS +%---------------------------------------------------------------------------------------- + +\documentclass[11pt]{article} +\input{structure.tex} % Include the file specifying the document structure and custom commands + +%---------------------------------------------------------------------------------------- +% ASSIGNMENT INFORMATION +%---------------------------------------------------------------------------------------- + +% Required +\newcommand{\assignmentQuestionName}{Question} % The word to be used as a prefix to question numbers; example alternatives: Problem, Exercise +\newcommand{\assignmentClass}{BIO101} % Course/class +\newcommand{\assignmentTitle}{Assignment\ \#1} % Assignment title or name +\newcommand{\assignmentAuthorName}{Yosuke Hanamura} % Student name + +% Optional (comment lines to remove) +\newcommand{\assignmentClassInstructor}{Jones 10:30am} % Intructor name/time/description +\newcommand{\assignmentDueDate}{Monday,\ January\ 24,\ 2019} % Due date +\setmainfont{Times New Roman} +%---------------------------------------------------------------------------------------- + +\newcommand{\drawbox}[4]{ + \pgfmathsetmacro \angle {30} + \pgfmathsetmacro \xd {{2/3*cos(\angle)}} + \pgfmathsetmacro \yd {{2/3*sin(\angle)}} + \pgfmathsetmacro \x {{#1-1+(#2-1)*(\xd)}} + \pgfmathsetmacro \y {{#3-1+(#2-1)*(\yd)}} + \draw[fill=#4] (\x,\y) -- (\x+1,\y) -- (\x+1,\y+1) -- (\x,\y+1) -- cycle; + } \usepackage{pgf,tikz} +\usepackage{xcolor} +\usepackage{algorithm} +\usepackage{algorithmic} +\usepackage{subfigure} +\usepackage{float} %设置图片浮动位置的宏包 +\usepackage{listings} +\usepackage{ctex} +\usepackage{wrapfig} +\usepackage{indentfirst} +\usepackage{appendix} +\usepackage{makecell} +\setlength {\parindent} {2em} +\usepackage{hyperref} +\hypersetup{ + colorlinks=true, + linkcolor=black +} + +\renewcommand{\contentsname}{\centering 目录} + +\lstset{ + language=c++, %代码语言使用的是matlab + frame=shadowbox, %把代码用带有阴影的框圈起来 + rulesepcolor=\color{red!20!green!20!blue!20},%代码块边框为淡青色 + keywordstyle=\color{blue!90}\bfseries, %代码关键字的颜色为蓝色,粗体 + commentstyle=\color{red!10!green!70}\textit, % 设置代码注释的颜色 + showstringspaces=false,%不显示代码字符串中间的空格标记 + numbers=left, % 显示行号 + numberstyle=\tiny, % 行号字体 + stringstyle=\ttfamily, % 代码字符串的特殊格式 + breaklines=true, %对过长的代码自动换行 + extendedchars=false, %解决代码跨页时,章节标题,页眉等汉字不显示的问题 + % escapebegin=\begin{CJK*},escapeend=\end{CJK*}, % 代码中出现中文必须加上,否则报错 + texcl=true} + +\begin{document} + +%---------------------------------------------------------------------------------------- +% TITLE PAGE +%---------------------------------------------------------------------------------------- + +\maketitle% Print the title page + +\thispagestyle{fancy} + +\newtcolorbox{mybox}[2][] +{colback = black!5!white, colframe = black!75!black, fonttitle = \bfseries, + colbacktitle = black!85!black, enhanced, + attach boxed title to top left={yshift=-2mm,xshift=2mm}, + title=#2,#1} + +\section{项目实现技术设计} + +\subsection{数据来源与持久化设计} + +本次项目选择本地数据库的存储方式进行数据的存储、更新与持久化,项目的所有数据来源均来自于本地数据库。采用Android自带的LitePal数据库。LitePal是一款开源的Android数据库框架,采用了对象关系映射(ORM)的模式,将平时开发时最常用的一些数据库功能进行了封装,使得开发者不用编写一行SQL语句就可以完成各种建表和増删改查的操作。 + +\begin{figure}[h] + \centering + \includegraphics[scale=0.3]{./img/User} + \caption{用户的数据存储结构} + \label{user} +\end{figure} + +以用户的存储方式为例,图\ref{user}是所有用户数据的存储方式,包括一个用户的\textbf{id、等级、用户名、密码}等等。数据库在本地上的使用方式可以查看本地的\href{./litpal数据库访问命令示例.md}{litPal数据库访问命令示例文档}。\textcolor{red}{注意一定要先将项目运行,打开安卓手机虚拟机后才可使用}。 + +\subsection{文章编辑器页面与详情页面} + +通过调研分析,由于编写一篇文章的用户常常需要各式各样的组件来精心编写自己的文章以达到最美的展示效果,因此编辑器我们采用富文本编辑器的方式以最大程度上满足不同用户的需要,同时文章发布出来后详情页面的渲染也可以采用富文本编辑器的渲染方式,使得文章的发布形式更加多样化。这里我们参考github上的\href{https://github.com/wasabeef/richeditor-android}{富文本编辑器开源库},效果如图\ref{edit_page}所示。 + +\begin{figure}[h] + \centering + \includegraphics[scale=0.4]{./img/edit_page} + \caption{文章发布页面} + \label{edit_page} +\end{figure} + +\subsection{头条详情页面} + +由于头条的发布理念是\textbf{记录想法,记录精彩},也就是类似于记录当下生活,因此我们的发布页设置不再使用富文本编辑器,而是仿照当今大多数朋友圈式设计方法。同时头条的展示页面我们也采用了仿照微信朋友圈的显示方法,采用github的开源库github上的\href{https://github.com/laobie/NineGridImageView}{自适应图片九宫格显示器},使得图片能够自适应地排布,已达到最美观的效果。期望设计与最终实现效果如图\ref{fig:subfig}所示 + +\begin{figure}[h] + \subfigure[头条发布页面]{ + \label{fig:subfig:a} %% label for first subfigure + \includegraphics[width=0.24\textwidth]{./img/edit_news}} + \subfigure[头条摘要页面]{ + \label{fig:subfig:b} %% label for second subfigure + \includegraphics[width=0.24\textwidth]{./img/fragment_news}} + \subfigure[四张图片的头条展示页]{ + \label{fig:subfig:c} %% label for second subfigure + \includegraphics[width=0.24\textwidth]{./img/news_four}} + \subfigure[六张图片的头条展示页]{ + \label{fig:subfig:d} %% label for second subfigure + \includegraphics[width=0.24\textwidth]{./img/news_six}} + \caption{头条相关设计} + \label{fig:subfig} %% label for entire figure +\end{figure} + +\subsection{评论的设计} + +评论的设计我们依然仿照朋友圈的设计方法,采用一个Recyclerview来记录用户的评论。这里为了使设计更加符合当代大多数人的理念,我们使得这个Recyclerview随着整个页面滑动,而不是这个Recyclerview本身滑动,因此我们把展示页面设计为一个Scrollview嵌套评论部分的Recyclerview。经过网上查阅资料,要实现上述效果需要将Recyclerview外套一个RelativeLayout,并将Recyclerview设置为不可滑动,这样便可解决Recyclerview显示不全的问题。期望设计与实现效果如图\ref{rv}所示。 + +\begin{figure}[h] + \centering + \includegraphics[scale=0.4]{./img/rv} + \caption{评论显示页面} + \label{rv} +\end{figure} + +\subsection{摘要页面不同item的设计} + +我们根据用户的发布图片的数量设计了5中不同的摘要展示方式,对于文章有\textbf{无图、一图、三图}的三种item,对于头条则是\textbf{无图、一图}的三种item,根据图片数量决定展示不同的item。期望设计与实现效果如图\ref{hr}所示。 + +\begin{figure}[h] + \centering + \subfigure[三种类型的文章item]{ + \includegraphics[width=0.22\textwidth]{./img/page}} + \subfigure[无图头条item]{ + \includegraphics[width=0.22\textwidth]{./img/news_noimage}} + \subfigure[一图头条item]{ + \includegraphics[width=0.22\textwidth]{./img/news_image}} + \caption{摘要页面相关设计} + \label{hr} %% label for entire figure +\end{figure} + +\subsection{视频页面的设计} + +视频发布页面的设计可以复用文章、头条发布页面的设计,而展示页面可以复用头条的展示页面,唯一的改变就是把图片换成了视频。这里视频采用github上的开源库\href{https://github.com/Jzvd/JZVideo}{饺子视频}。期望设计与实现效果如图\ref{video}所示。 + +\begin{figure}[h] + \centering + \includegraphics[scale=0.6]{./img/video} + \caption{视频显示页面} + \label{video} +\end{figure} + +\section{代码合作开发技术} + +本次项目的代码合作开发决定采用git团队协作的方式。小组中的每个成员在git仓库建立自己的分支,在自己的分支上完成自己的分工任务,并且经常从主分支拉取最新的代码以获得其他成员实现部分的代码。在完成自己部分的代码后,向主分支提起Pull Request,如果没有冲突则可直接合并,如果有冲突则由项目主负责人和组员协商,消除冲突后方可合并。 + + +\end{document} diff --git a/report/.keep b/report/.keep deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/src/.keep b/src/.keep deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/src/mad_final/.gitignore b/src/mad_final/.gitignore deleted file mode 100644 index aa724b77071afcbd9bb398053e05adaf7ac9405a..0000000000000000000000000000000000000000 --- a/src/mad_final/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -*.iml -.gradle -/local.properties -/.idea/caches -/.idea/libraries -/.idea/modules.xml -/.idea/workspace.xml -/.idea/navEditor.xml -/.idea/assetWizardSettings.xml -.DS_Store -/build -/captures -.externalNativeBuild -.cxx -local.properties diff --git a/src/mad_final/.idea/.gitignore b/src/mad_final/.idea/.gitignore deleted file mode 100644 index 26d33521af10bcc7fd8cea344038eaaeb78d0ef5..0000000000000000000000000000000000000000 --- a/src/mad_final/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml diff --git a/src/mad_final/.idea/compiler.xml b/src/mad_final/.idea/compiler.xml deleted file mode 100644 index 61a9130cd9669c3843e6445dfe1fee2d493869bc..0000000000000000000000000000000000000000 --- a/src/mad_final/.idea/compiler.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/src/mad_final/.idea/gradle.xml b/src/mad_final/.idea/gradle.xml deleted file mode 100644 index b617266ab6a61e3df316b4496b5649099b08a491..0000000000000000000000000000000000000000 --- a/src/mad_final/.idea/gradle.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/src/mad_final/.idea/jarRepositories.xml b/src/mad_final/.idea/jarRepositories.xml deleted file mode 100644 index d804d210c6047d86f806d1c03714f538857f6cfd..0000000000000000000000000000000000000000 --- a/src/mad_final/.idea/jarRepositories.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/mad_final/.idea/misc.xml b/src/mad_final/.idea/misc.xml deleted file mode 100644 index d5d35ec44f10991b508f6454a85204a276726364..0000000000000000000000000000000000000000 --- a/src/mad_final/.idea/misc.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/src/mad_final/.idea/vcs.xml b/src/mad_final/.idea/vcs.xml deleted file mode 100644 index b2bdec2d71b6a5ce4ae49efc37516809c50e4d5e..0000000000000000000000000000000000000000 --- a/src/mad_final/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/src/mad_final/app/.gitignore b/src/mad_final/app/.gitignore deleted file mode 100644 index 42afabfd2abebf31384ca7797186a27a4b7dbee8..0000000000000000000000000000000000000000 --- a/src/mad_final/app/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/src/mad_final/app/build.gradle b/src/mad_final/app/build.gradle deleted file mode 100644 index ace256025f6fedb7f37ba6a78edd16091e8d00de..0000000000000000000000000000000000000000 --- a/src/mad_final/app/build.gradle +++ /dev/null @@ -1,63 +0,0 @@ -plugins { - id 'com.android.application' -} - -android { - compileSdkVersion 30 - buildToolsVersion "30.0.3" - - defaultConfig { - applicationId "com.example.mad_final" - minSdkVersion 16 - targetSdkVersion 30 - versionCode 1 - versionName "1.0" - vectorDrawables.useSupportLibrary = true - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - vectorDrawables.useSupportLibrary = true - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } -} - -dependencies { -// implementation 'tv.danmaku.ijk.media:ijkplayer-java:0.8.1.2' -// implementation 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.1.2' - //饺子视频 - implementation 'cn.jzvd:jiaozivideoplayer:6.4.1' - implementation 'com.jakewharton:butterknife:10.1.0' - annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0' - //加载图片 - implementation 'com.github.bumptech.glide:glide:4.8.0' - implementation 'jp.wasabeef:richeditor-android:2.0.0' - implementation 'androidx.appcompat:appcompat:1.1.0' - implementation 'com.google.android.material:material:1.1.0' - implementation 'androidx.constraintlayout:constraintlayout:1.1.3' - implementation 'androidx.legacy:legacy-support-v4:1.0.0' - implementation 'androidx.cardview:cardview:1.0.0' - implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.2.0' - implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0' - implementation 'androidx.preference:preference:1.1.1' - testImplementation 'junit:junit:4.+' - androidTestImplementation 'androidx.test.ext:junit:1.1.1' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' - implementation 'org.litepal.guolindev:core:3.2.3' - implementation 'androidx.core:core:1.5.0-alpha05' - implementation 'com.moxun:tagcloudlib:1.2.1' - compile 'cn.lemon:multiview:1.0.2' - implementation 'com.jaeger.ninegridimageview:library:1.0.2' - implementation 'com.romainpiel.shimmer:library:1.4.0@aar' - implementation 'de.hdodenhof:circleimageview:3.1.0' - implementation 'cn.jzvd:jiaozivideoplayer:7.6.0' - implementation 'com.github.bumptech.glide:glide:4.9.0' - implementation 'top.zibin:BottomDialog:1.0.1' -} \ No newline at end of file diff --git a/src/mad_final/app/proguard-rules.pro b/src/mad_final/app/proguard-rules.pro deleted file mode 100644 index 26bf79714ee224b19d8778be0257d900e0364679..0000000000000000000000000000000000000000 --- a/src/mad_final/app/proguard-rules.pro +++ /dev/null @@ -1,30 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile - --keep public class cn.jzvd.JZMediaSystem {*; } --keep public class cn.jzvd.demo.CustomMedia.CustomMedia {*; } --keep public class cn.jzvd.demo.CustomMedia.JZMediaIjk {*; } --keep public class cn.jzvd.demo.CustomMedia.JZMediaSystemAssertFolder {*; } - --keep class tv.danmaku.ijk.media.player.** {*; } --dontwarn tv.danmaku.ijk.media.player.* --keep interface tv.danmaku.ijk.media.player.** { *; } \ No newline at end of file diff --git a/src/mad_final/app/src/androidTest/java/com/example/mad_final/ExampleInstrumentedTest.java b/src/mad_final/app/src/androidTest/java/com/example/mad_final/ExampleInstrumentedTest.java deleted file mode 100644 index e6376bc9aeb32987f976296e904cbad6aea71b49..0000000000000000000000000000000000000000 --- a/src/mad_final/app/src/androidTest/java/com/example/mad_final/ExampleInstrumentedTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.example.mad_final; - -import android.content.Context; - -import androidx.test.platform.app.InstrumentationRegistry; -import androidx.test.ext.junit.runners.AndroidJUnit4; - -import org.junit.Test; -import org.junit.runner.RunWith; - -import static org.junit.Assert.*; - -/** - * Instrumented test, which will execute on an Android device. - * - * @see Testing documentation - */ -@RunWith(AndroidJUnit4.class) -public class ExampleInstrumentedTest { - @Test - public void useAppContext() { - // Context of the app under test. - Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); - assertEquals("com.example.mad_final", appContext.getPackageName()); - } -} \ No newline at end of file diff --git a/src/mad_final/app/src/main/AndroidManifest.xml b/src/mad_final/app/src/main/AndroidManifest.xml deleted file mode 100644 index 0495e237b51d4a90eb11bb506b59925c7c0d9519..0000000000000000000000000000000000000000 --- a/src/mad_final/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/mad_final/app/src/main/assets/litepal.xml b/src/mad_final/app/src/main/assets/litepal.xml deleted file mode 100644 index 4128ca3f3357117cb3d451d8d67458eef0826d14..0000000000000000000000000000000000000000 --- a/src/mad_final/app/src/main/assets/litepal.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/mad_final/app/src/main/ic_launcher-playstore.png b/src/mad_final/app/src/main/ic_launcher-playstore.png deleted file mode 100644 index da357013440bee425bbac4c6297823ce8673076e..0000000000000000000000000000000000000000 Binary files a/src/mad_final/app/src/main/ic_launcher-playstore.png and /dev/null differ diff --git a/src/mad_final/app/src/main/java/com/example/mad_final/Adapter/DetailArticleRvAdapter.java b/src/mad_final/app/src/main/java/com/example/mad_final/Adapter/DetailArticleRvAdapter.java deleted file mode 100644 index c80f5cc0168774dba68148675c9b819ea7aa26a5..0000000000000000000000000000000000000000 --- a/src/mad_final/app/src/main/java/com/example/mad_final/Adapter/DetailArticleRvAdapter.java +++ /dev/null @@ -1,156 +0,0 @@ -package com.example.mad_final.Adapter; - -import android.content.Context; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.animation.Animation; -import android.view.animation.TranslateAnimation; -import android.widget.Button; -import android.widget.CheckBox; -import android.widget.ImageButton; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.fragment.app.FragmentActivity; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.example.mad_final.DataStruct.Comment; -import com.example.mad_final.DataStruct.User; -import com.example.mad_final.DataStruct.Video; -import com.example.mad_final.Listener.FavorButtonListener; -import com.example.mad_final.R; - -import java.util.List; - -import de.hdodenhof.circleimageview.CircleImageView; - -import static android.view.animation.Animation.RELATIVE_TO_SELF; - -public class DetailArticleRvAdapter extends RecyclerView.Adapter { - private Context mContext; - private List mCommentList; - private LayoutInflater mInflater; - private int size = 3; - - public DetailArticleRvAdapter(Context context, List data) { - this.mContext = context; - this.mCommentList = data; - this.mInflater = LayoutInflater.from(context); - } - - @NonNull - @Override - public DetailArticleViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View view = mInflater.inflate(R.layout.item_detail_article_comment, parent, false); - DetailArticleViewHolder holder = new DetailArticleViewHolder(view); - return holder; - } - - @Override - public void onBindViewHolder(@NonNull DetailArticleViewHolder holder, int position) { - if (mCommentList == null) { - setListeners(holder, position, Comment.class.getName()); - return; - } - - Comment target = mCommentList.get(position); - User user = new User(); - List favorList = target.getFavors(); - - // Set Image - Glide.with(mContext).load(user.getImagePath()).into(holder.author_photo); - holder.username.setText(user.getName()); - holder.comment_time.setText(target.getSendtime()); - holder.comment_count_button.setText(target.getReplys().size() + "回复"); - holder.favor_checkbox.setText(favorList.size()); - // TODO: 判断当前用户ID是否在favorList中,并设置相应的setChecked - holder.favor_checkbox.setChecked(false); - - // Set Listeners - setListeners(holder, position, Comment.class.getName()); - } - - private void setListeners(@NonNull DetailArticleRvAdapter.DetailArticleViewHolder holder, int position, String type) { - // TODO: 获取评论ID - int targetId = position; - - holder.favor_checkbox.setOnCheckedChangeListener(new FavorButtonListener(targetId, type)); - holder.delete_button.setOnClickListener(v -> { - TranslateAnimation transX = new TranslateAnimation(RELATIVE_TO_SELF, 0, RELATIVE_TO_SELF, 1, - RELATIVE_TO_SELF, 0, RELATIVE_TO_SELF, 0); - transX.setDuration(1000); - transX.setAnimationListener(new Animation.AnimationListener() { - @Override - public void onAnimationStart(Animation animation) { - - } - - @Override - public void onAnimationEnd(Animation animation) { - removeComment(position); - } - - @Override - public void onAnimationRepeat(Animation animation) { - - } - }); - holder.itemView.startAnimation(transX); - }); - holder.comment_count_button.setOnClickListener(v -> { - // TODO: 切换Fragment -// ((FragmentActivity)mContext).getSupportFragmentManager().beginTransaction() -// .replace(R.id.detail_activity_container, ) -// .commit(); - }); - } - public void addComment(Comment comment) { - if (mCommentList != null) mCommentList.add(0, comment); - notifyItemInserted(0); - } - - public void removeComment(int position) { - if (mCommentList == null) { - if (size == 0) { - Log.d("CommentRvAdapter", "List is empty"); - } else { - size--; - } - } else { - mCommentList.remove(position); - } - - notifyItemRemoved(position); - notifyDataSetChanged(); - Log.d("CommentRVAdapter", getItemCount() + ""); - } - - @Override - public int getItemCount() { - if (mCommentList == null) return size; - return mCommentList.size(); - } - - class DetailArticleViewHolder extends RecyclerView.ViewHolder { - CircleImageView author_photo; - TextView username, comment_time, comment_content; - CheckBox favor_checkbox; - Button comment_count_button; - ImageButton delete_button; - - public DetailArticleViewHolder(@NonNull View itemView) { - super(itemView); - author_photo = itemView.findViewById(R.id.detail_article_comment_photo); - username = itemView.findViewById(R.id.detail_article_comment_username); - comment_time = itemView.findViewById(R.id.detail_article_comment_time); - comment_content = itemView.findViewById(R.id.detail_article_comment_content); - favor_checkbox = itemView.findViewById(R.id.detail_article_comment_favor_checkbox); - comment_count_button = itemView.findViewById(R.id.detail_article_comment_count_button); - delete_button = itemView.findViewById(R.id.detail_article_comment_delete_button); - } - } -} - diff --git a/src/mad_final/app/src/main/java/com/example/mad_final/Adapter/DetailVideoRvAdapter.java b/src/mad_final/app/src/main/java/com/example/mad_final/Adapter/DetailVideoRvAdapter.java deleted file mode 100644 index 1caaa92ec63864075a3cbdb256a2be55c1d0fde3..0000000000000000000000000000000000000000 --- a/src/mad_final/app/src/main/java/com/example/mad_final/Adapter/DetailVideoRvAdapter.java +++ /dev/null @@ -1,155 +0,0 @@ -package com.example.mad_final.Adapter; - -import android.content.Context; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.animation.Animation; -import android.view.animation.TranslateAnimation; -import android.widget.Button; -import android.widget.CheckBox; -import android.widget.ImageButton; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.fragment.app.FragmentActivity; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.example.mad_final.DataStruct.Comment; -import com.example.mad_final.DataStruct.User; -import com.example.mad_final.DataStruct.Video; -import com.example.mad_final.Listener.FavorButtonListener; -import com.example.mad_final.R; - -import java.util.List; - -import de.hdodenhof.circleimageview.CircleImageView; - -import static android.view.animation.Animation.RELATIVE_TO_SELF; - -public class DetailVideoRvAdapter extends RecyclerView.Adapter { - private Context mContext; - private List mCommentList; - private LayoutInflater mInflater; - private int size = 3; - - public DetailVideoRvAdapter(Context context, List data) { - this.mContext = context; - this.mCommentList = data; - this.mInflater = LayoutInflater.from(context); - } - - @NonNull - @Override - public DetailVideoViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View view = mInflater.inflate(R.layout.item_detail_video_comment, parent, false); - DetailVideoViewHolder holder = new DetailVideoViewHolder(view); - return holder; - } - - @Override - public void onBindViewHolder(@NonNull DetailVideoViewHolder holder, int position) { - if (mCommentList == null) { - setListeners(holder, position, Comment.class.getName()); - return; - } - - Comment target = mCommentList.get(position); - User user = new User(); - List favorList = target.getFavors(); - - // Set Image - Glide.with(mContext).load(user.getImagePath()).into(holder.author_photo); - holder.username.setText(user.getName()); - holder.comment_time.setText(target.getSendtime()); - holder.comment_count_button.setText(target.getReplys().size() + "回复"); - holder.favor_checkbox.setText(favorList.size()); - // TODO: 判断当前用户ID是否在favorList中,并设置相应的setChecked - holder.favor_checkbox.setChecked(false); - - // Set Listeners - setListeners(holder, position, Comment.class.getName()); - } - - private void setListeners(@NonNull DetailVideoRvAdapter.DetailVideoViewHolder holder, int position, String type) { - // TODO: 获取评论ID - int targetId = position; - - holder.favor_checkbox.setOnCheckedChangeListener(new FavorButtonListener(targetId, type)); - holder.delete_button.setOnClickListener(v -> { - TranslateAnimation transX = new TranslateAnimation(RELATIVE_TO_SELF, 0, RELATIVE_TO_SELF, 1, - RELATIVE_TO_SELF, 0, RELATIVE_TO_SELF, 0); - transX.setDuration(1000); - transX.setAnimationListener(new Animation.AnimationListener() { - @Override - public void onAnimationStart(Animation animation) { - - } - - @Override - public void onAnimationEnd(Animation animation) { - removeComment(position); - } - - @Override - public void onAnimationRepeat(Animation animation) { - - } - }); - holder.itemView.startAnimation(transX); - }); - holder.comment_count_button.setOnClickListener(v -> { - // TODO: 切换Fragment -// ((FragmentActivity)mContext).getSupportFragmentManager().beginTransaction() -// .replace(R.id.detail_activity_container, ) -// .commit(); - }); - } - public void addComment(Comment comment) { - if (mCommentList != null) mCommentList.add(0, comment); - notifyItemInserted(0); - } - - public void removeComment(int position) { - if (mCommentList == null) { - if (size == 0) { - Log.d("CommentRvAdapter", "List is empty"); - } else { - size--; - } - } else { - mCommentList.remove(position); - } - - notifyItemRemoved(position); - notifyDataSetChanged(); - Log.d("CommentRVAdapter", getItemCount() + ""); - } - - @Override - public int getItemCount() { - if (mCommentList == null) return size; - return mCommentList.size(); - } - - class DetailVideoViewHolder extends RecyclerView.ViewHolder { - CircleImageView author_photo; - TextView username, comment_time, comment_content; - CheckBox favor_checkbox; - Button comment_count_button; - ImageButton delete_button; - - public DetailVideoViewHolder(@NonNull View itemView) { - super(itemView); - author_photo = itemView.findViewById(R.id.detail_video_comment_photo); - username = itemView.findViewById(R.id.detail_video_comment_username); - comment_time = itemView.findViewById(R.id.detail_video_comment_time); - comment_content = itemView.findViewById(R.id.detail_video_comment_content); - favor_checkbox = itemView.findViewById(R.id.detail_video_comment_favor_checkbox); - comment_count_button = itemView.findViewById(R.id.detail_video_comment_count_button); - delete_button = itemView.findViewById(R.id.detail_video_comment_delete_button); - } - } -} diff --git a/src/mad_final/app/src/main/java/com/example/mad_final/Adapter/HomeRecommendAdapter.java b/src/mad_final/app/src/main/java/com/example/mad_final/Adapter/HomeRecommendAdapter.java deleted file mode 100644 index 5412d05e25c8c30b78e441d31855c969d9d29d49..0000000000000000000000000000000000000000 --- a/src/mad_final/app/src/main/java/com/example/mad_final/Adapter/HomeRecommendAdapter.java +++ /dev/null @@ -1,321 +0,0 @@ -package com.example.mad_final.Adapter; - -import android.content.Context; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.example.mad_final.DataStruct.BasePage; -import com.example.mad_final.DataStruct.New; -import com.example.mad_final.DataStruct.Page; -import com.example.mad_final.GetTimeAgo; -import com.example.mad_final.Listener.CommentButtonListener; -import com.example.mad_final.R; - -import org.litepal.LitePal; - -import java.text.ParseException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - - -public class HomeRecommendAdapter extends RecyclerView.Adapter{ - - @NonNull - - private Context mContext; - private List mPageList; - private int mPageListsize = 0; - private LayoutInflater mInflater; - private static final int ONE_IMAGE = 1; - private static final int NO_IMAGE = 0; - private static final int THREE_IMAGE = 3; - private static final int NEWS_ITEM_IMAGE = 4; - private static final int NEWS_ITEM_NO_IAMGE = 5; - - public HomeRecommendAdapter(Context context, List data) { - this.mContext = context; - this.mPageList = data; - mPageListsize = data.size(); - - Collections.sort(mPageList, new Comparator() { - @Override - public int compare(BasePage o1, BasePage o2) { - return o2.getSendtime().compareTo(o1.getSendtime()); - } - }); - - this.mInflater = LayoutInflater.from(context); - } - - @Override - public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View view; - switch (viewType) { - case NO_IMAGE: { - view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_recommend_article_text, parent, false); - return new NoImageViewHolder(view); - } - case ONE_IMAGE: { - view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_recommend_article_one_img, parent, false); - return new OneImageViewHolder(view); - } - case THREE_IMAGE: { - view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_recommend_article_three_img, parent, false); - return new ThreeImageViewHolder(view); - } - case NEWS_ITEM_IMAGE: { - view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_recommend_news_one_image, parent, false); - return new NewsImageViewHolder(view); - } - case NEWS_ITEM_NO_IAMGE:{ - view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_recommend_news_no_image, parent, false); - return new NewsNoImageViewHolder(view); - } - } - - view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_recommend_article_text, parent, false); - return new NoImageViewHolder(view); - - } - - - - @Override - public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { - if (holder instanceof NoImageViewHolder) { - NoImageViewHolder viewHolder = (NoImageViewHolder) holder; - Page tmpPage = (Page)mPageList.get(position); - viewHolder.title.setText(tmpPage.getTitle()); - registerListeners(holder, position, Page.class.getName()); - } - else if (holder instanceof OneImageViewHolder) { - - Page tmpPage = (Page)mPageList.get(position); - OneImageViewHolder viewHolder = (OneImageViewHolder) holder; - viewHolder.title.setText(tmpPage.getTitle()); - Glide.with(mContext).load(tmpPage.getImages().get(0)).into(viewHolder.img); - viewHolder.author_name.setText(tmpPage.getUser().getName()); - viewHolder.answer_count.setText(tmpPage.getComments().size()+"评论"); - try { - viewHolder.time.setText(GetTimeAgo.getTimeAgo(tmpPage.getSendtime())); - } catch (ParseException e) { - e.printStackTrace(); - } - registerListeners(holder, position, Page.class.getName()); - } - else if (holder instanceof ThreeImageViewHolder) { - ThreeImageViewHolder viewHolder = (ThreeImageViewHolder) holder; - Page tmpPage = (Page)mPageList.get(position); - - viewHolder.title.setText(tmpPage.getTitle()); - Glide.with(mContext).load(tmpPage.getImages().get(0)).apply(new RequestOptions().override(600,250)).into(viewHolder.img0); - Glide.with(mContext).load(tmpPage.getImages().get(1)).apply(new RequestOptions().override(600,250)).into(viewHolder.img1); - Glide.with(mContext).load(tmpPage.getImages().get(2)).apply(new RequestOptions().override(600,250)).into(viewHolder.img2); - viewHolder.author_name.setText(tmpPage.getUser().getName()); - viewHolder.answer_count.setText(tmpPage.getComments().size()+"评论"); - try { - viewHolder.time.setText(GetTimeAgo.getTimeAgo(tmpPage.getSendtime())); - } catch (ParseException e) { - e.printStackTrace(); - } - registerListeners(holder, position, Page.class.getName()); - } - else if (holder instanceof NewsImageViewHolder) { - NewsImageViewHolder viewHolder = (NewsImageViewHolder) holder; - New tmpNew = (New)mPageList.get(position); - viewHolder.description.setText(tmpNew.getDescription()); - Glide.with(mContext).load(tmpNew.getImagePaths().get(0)).into(viewHolder.img); - viewHolder.username.setText(tmpNew.getUser().getName()); - viewHolder.time.setText(tmpNew.getSendtime()); - registerListeners(holder, position, New.class.getName()); - - } - else if (holder instanceof NewsNoImageViewHolder) { - NewsNoImageViewHolder viewHolder = (NewsNoImageViewHolder) holder; - New tmpNew = (New)mPageList.get(position); - viewHolder.description.setText(tmpNew.getDescription()); - viewHolder.username.setText(tmpNew.getUser().getName()); - viewHolder.time.setText(tmpNew.getSendtime()); - registerListeners(holder, position, New.class.getName()); - } - - - } - - public void registerListeners(@NonNull RecyclerView.ViewHolder holder, int position, String type) { - int targetId = position; - - if (holder instanceof NoImageViewHolder) { - NoImageViewHolder viewHolder = (NoImageViewHolder) holder; - viewHolder.title.setOnClickListener(new CommentButtonListener(targetId, type)); - } - else if (holder instanceof OneImageViewHolder) { - - OneImageViewHolder viewHolder = (OneImageViewHolder) holder; - viewHolder.title.setOnClickListener(new CommentButtonListener(targetId, type)); - viewHolder.img.setOnClickListener(new CommentButtonListener(targetId, type)); - } - else if (holder instanceof ThreeImageViewHolder) { - ThreeImageViewHolder viewHolder = (ThreeImageViewHolder) holder; - viewHolder.title.setOnClickListener(new CommentButtonListener(targetId, type)); - viewHolder.img0.setOnClickListener(new CommentButtonListener(targetId, type)); - viewHolder.img1.setOnClickListener(new CommentButtonListener(targetId, type)); - viewHolder.img2.setOnClickListener(new CommentButtonListener(targetId, type)); - } - else if (holder instanceof NewsNoImageViewHolder) { - NewsNoImageViewHolder viewHolder = (NewsNoImageViewHolder) holder; - viewHolder.description.setOnClickListener(new CommentButtonListener(targetId, type)); - } - else if (holder instanceof NewsImageViewHolder) { - NewsImageViewHolder viewHolder = (NewsImageViewHolder) holder; - viewHolder.description.setOnClickListener(new CommentButtonListener(targetId, type)); - viewHolder.img.setOnClickListener(new CommentButtonListener(targetId, type)); - } - } - - public int dpToPx(float dp){ - float px = mContext.getResources().getDisplayMetrics().density; - return (int)(dp * px + 0.5f); - } - - public void AdapterUpdate() { - List tmp = LitePal.findAll(Page.class,true); - List newsTmp = LitePal.findAll(New.class, true); - int PageSize = tmp.size(), NewsSize = newsTmp.size(); - - mPageList = new ArrayList<>(); - - for (int i = 0; i < PageSize; i++) { - mPageList.add(tmp.get(i)); - } - - for (int i = 0; i < NewsSize; i++) { - mPageList.add(newsTmp.get(i)); - } - - mPageListsize = mPageList.size(); - - Collections.sort(mPageList, new Comparator() { - @Override - public int compare(BasePage o1, BasePage o2) { - return o2.getSendtime().compareTo(o1.getSendtime()); - } - }); - notifyDataSetChanged(); - } - - - - @Override - public int getItemViewType(int position) { - BasePage page = mPageList.get(position); - - if (page instanceof Page) { - Page tmpPage = (Page) page; - if (tmpPage.getImages().size() == 0) { - return NO_IMAGE; - } - else if (tmpPage.getImages().size() <= 2) { - return ONE_IMAGE; - } - else { - return THREE_IMAGE; - } - } - else { - New tmpNew = (New) page; - if (tmpNew.getImagePaths().size() > 0) { - return NEWS_ITEM_IMAGE; - } - else { - return NEWS_ITEM_NO_IAMGE; - } - } - - - - } - - @Override - public int getItemCount() { - return mPageList.size(); - } - - class NoImageViewHolder extends RecyclerView.ViewHolder { - @BindView(R.id.tv_title) TextView title; - - - public NoImageViewHolder(@NonNull View itemView) { - super(itemView); - ButterKnife.bind(this,itemView); - } - } - - class OneImageViewHolder extends RecyclerView.ViewHolder { - @BindView(R.id.tv_title) TextView title; - @BindView(R.id.iv_image_big) ImageView img; - @BindView(R.id.tv_author_name) TextView author_name; - @BindView(R.id.tv_answer_count) TextView answer_count; - @BindView(R.id.tv_time) TextView time; - - public OneImageViewHolder(@NonNull View itemView) { - super(itemView); - ButterKnife.bind(this,itemView); - } - } - - class ThreeImageViewHolder extends RecyclerView.ViewHolder { - @BindView(R.id.tv_title) TextView title; - @BindView(R.id.iv_0) ImageView img0; - @BindView(R.id.iv_1) ImageView img1; - @BindView(R.id.iv_2) ImageView img2; - @BindView(R.id.tv_author_name) TextView author_name; - @BindView(R.id.tv_answer_count) TextView answer_count; - @BindView(R.id.tv_time) TextView time; - - public ThreeImageViewHolder(@NonNull View itemView) { - super(itemView); - ButterKnife.bind(this,itemView); - } - } - - class NewsImageViewHolder extends RecyclerView.ViewHolder { - - @BindView(R.id.news_item_description) TextView description; - @BindView(R.id.iv_image_big) ImageView img; - @BindView(R.id.news_item_username) TextView username; - @BindView(R.id.news_item_time) TextView time; - - public NewsImageViewHolder(@NonNull View itemView) { - super(itemView); - ButterKnife.bind(this, itemView); - } - } - - class NewsNoImageViewHolder extends RecyclerView.ViewHolder { - - @BindView(R.id.news_item_description) TextView description; - @BindView(R.id.news_item_username) TextView username; - @BindView(R.id.news_item_time) TextView time; - - public NewsNoImageViewHolder(@NonNull View itemView) { - super(itemView); - ButterKnife.bind(this, itemView); - } - } - -} diff --git a/src/mad_final/app/src/main/java/com/example/mad_final/Adapter/MyFocusRvAdapter.java b/src/mad_final/app/src/main/java/com/example/mad_final/Adapter/MyFocusRvAdapter.java deleted file mode 100644 index 69c30a504a83d331e6d955b0a9f0ca29a0905148..0000000000000000000000000000000000000000 --- a/src/mad_final/app/src/main/java/com/example/mad_final/Adapter/MyFocusRvAdapter.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.example.mad_final.Adapter; - -import android.content.Context; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Button; -import android.widget.TextView; -import android.widget.Toast; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.example.mad_final.DataStruct.Comment; -import com.example.mad_final.DataStruct.User; -import com.example.mad_final.DataStruct.Video; -import com.example.mad_final.Listener.FollowButtonListener; -import com.example.mad_final.R; - -import org.jetbrains.annotations.NotNull; - -import java.util.List; - -import cn.jzvd.JzvdStd; -import de.hdodenhof.circleimageview.CircleImageView; - -public class MyFocusRvAdapter extends RecyclerView.Adapter { - public User curUser; - private Context mContext; - private LayoutInflater mInflater; - private List mData; - - public MyFocusRvAdapter(Context context, List datas) { - this.mContext = context; - this.mData = datas; - mInflater = LayoutInflater.from(context); - } - - public void refresh(User user) { - this.curUser = user; - this.mData = user.getFollows(); - if (this.mData != null) { - Log.d("MyFocusRvAdapter", "onBindViewHolder: mData is not null, its size is " + mData.size()); - } - notifyDataSetChanged(); - } - - @NonNull - @NotNull - @Override - public MyFocusHolder onCreateViewHolder(@NonNull @NotNull ViewGroup parent, int viewType) { - View view = mInflater.inflate(R.layout.item_my_focus, parent, false); - MyFocusRvAdapter.MyFocusHolder holder = new MyFocusRvAdapter.MyFocusHolder(view); - return holder; - } - - @Override - public void onBindViewHolder(@NonNull @NotNull MyFocusHolder holder, int position) { - if (mData == null) { - // do nothing - } else { - - // Get Video Details - User nowUser = mData.get(position); - - Log.d("MyFocusRvAdapter", "onBindViewHolder: nowUser is " + nowUser.getName()); - - // Set Images - if (nowUser.getImagePath() != null) { - Glide.with(mContext) - .load(nowUser.getImagePath()) - .into(holder.avatar); - } else { - Glide.with(mContext) - .load(R.mipmap.user) - .into(holder.avatar); - Log.d("MyFocusRvAdapter", "Can't load user photo image"); - Toast.makeText(mContext, "Can't load user photo image", Toast.LENGTH_SHORT).show(); - } - - // Set Text - holder.name.setText(nowUser.getName()); - holder.grade.setText(nowUser.getLevel()); - holder.favored_num.setText(nowUser.getFollowing()); - holder.fans_num.setText(nowUser.getFollows().size()); - } - holder.follow.setOnClickListener(new FollowButtonListener()); - } - - @Override - public int getItemCount() { - if (mData == null) - return 3; - return mData.size(); - } - - - public class MyFocusHolder extends RecyclerView.ViewHolder { - CircleImageView avatar; - TextView name, grade, favored_num, fans_num; - Button follow; - - public MyFocusHolder(@NonNull @NotNull View itemView) { - super(itemView); - avatar = (CircleImageView) itemView.findViewById(R.id.author_image); - name = (TextView) itemView.findViewById(R.id.author_name); - grade = (TextView) itemView.findViewById(R.id.author_grade); - favored_num = (TextView) itemView.findViewById(R.id.author_favored); - fans_num = (TextView) itemView.findViewById(R.id.author_fans); - follow = (Button) itemView.findViewById(R.id.author_follow_button); - } - } -} diff --git a/src/mad_final/app/src/main/java/com/example/mad_final/Adapter/MyNewRvAdapter.java b/src/mad_final/app/src/main/java/com/example/mad_final/Adapter/MyNewRvAdapter.java deleted file mode 100644 index d92edafd82da7f4c68dd9b271763b32f87c59bed..0000000000000000000000000000000000000000 --- a/src/mad_final/app/src/main/java/com/example/mad_final/Adapter/MyNewRvAdapter.java +++ /dev/null @@ -1,131 +0,0 @@ -package com.example.mad_final.Adapter; - -import android.app.AlertDialog; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.graphics.BitmapFactory; -import android.location.Location; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.animation.Animation; -import android.view.animation.AnimationUtils; -import android.widget.ImageButton; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.example.mad_final.DataStruct.New; -import com.example.mad_final.DataStruct.Page; -import com.example.mad_final.DataStruct.User; -import com.example.mad_final.LoginActivity; -import com.example.mad_final.R; - -import org.litepal.LitePal; - -import java.util.List; - -public class MyNewRvAdapter extends RecyclerView.Adapter { - private Context mContext; - - public List newList; - - public MyNewRvAdapter(Context mContext,List newList) { - this.mContext = mContext; - this.newList = newList; - } - - @NonNull - @Override - public RvHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_new, parent, false); - return new RvHolder(inflate); - } - - @Override - public void onBindViewHolder(@NonNull RvHolder holder, int position) { - if (newList == null) - return; - New new1 = newList.get(position); - holder.sendTime.setText(new1.getSendtime()); - holder.context.setText(new1.getDescription()); - if (new1.getComments() == null) - holder.comment.setText("0"); - else holder.comment.setText(new1.getComments().size() + ""); - if (new1.getFavors() == null) - holder.getGood.setText("0"); - else holder.getGood.setText(new1.getFavors().size() + ""); - if (new1.getImagePaths() != null && new1.getImagePaths().size() > 0) - holder.image.setImageBitmap(BitmapFactory.decodeFile(new1.getImagePaths().get(0))); - - //删除 - holder.delete.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - deleteItem(position); - } - }); - - //跳转到展示页 - holder.context.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - // -// Intent intent = new Intent(v.getContext(), 展示页.class); -// startActivity() - } - }); - - } - - private void deleteItem(int position) { - AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);//通过AlertDialog.Builder创建出一个AlertDialog的实例 -// dialog.setTitle("This is Dialog");//设置对话框的标题 - dialog.setMessage("是否确定删除该头条?");//设置对话框的内容 - dialog.setCancelable(true);//设置对话框是否可以取消 - dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {//确定按钮的点击事件 - @Override - public void onClick(DialogInterface dialog, int which) { - LitePal.delete(New.class, newList.get(position).getId()); - newList.remove(position); - notifyItemRemoved(position); - notifyDataSetChanged(); - } - }); - dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {//取消按钮的点击事件 - @Override - public void onClick(DialogInterface dialog, int which) { - } - }); - dialog.show(); - } - - @Override - public int getItemCount() { - return newList == null ? 0 : newList.size(); - } - - - public static class RvHolder extends RecyclerView.ViewHolder { - TextView sendTime, context, getGood, comment; - ImageView image; - ImageButton delete; - - public RvHolder(@NonNull View itemView) { - super(itemView); - delete = itemView.findViewById(R.id.delete); - getGood = itemView.findViewById(R.id.getGood); - comment = itemView.findViewById(R.id.comment); - sendTime = itemView.findViewById(R.id.sendTime); - context = itemView.findViewById(R.id.context); - image = itemView.findViewById(R.id.p1); - } - } -} - - - - diff --git a/src/mad_final/app/src/main/java/com/example/mad_final/Adapter/MyPageRvAdapter.java b/src/mad_final/app/src/main/java/com/example/mad_final/Adapter/MyPageRvAdapter.java deleted file mode 100644 index bed7984581562f41dbd32e1acdb22c8768558af0..0000000000000000000000000000000000000000 --- a/src/mad_final/app/src/main/java/com/example/mad_final/Adapter/MyPageRvAdapter.java +++ /dev/null @@ -1,188 +0,0 @@ -package com.example.mad_final.Adapter; - -import android.app.AlertDialog; -import android.content.Context; -import android.content.DialogInterface; -import android.graphics.BitmapFactory; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageButton; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.example.mad_final.DataStruct.New; -import com.example.mad_final.DataStruct.Page; -import com.example.mad_final.MainActivity; -import com.example.mad_final.R; - -import org.litepal.LitePal; - -import java.util.List; - -public class MyPageRvAdapter extends RecyclerView.Adapter { - private Context mContext; - private List pageList; - - public MyPageRvAdapter(Context mContext, List pageList) { - this.mContext = mContext; - this.pageList = pageList; - } - - @NonNull - @Override - public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View view; - if (viewType == 3) { - view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_page_3p, parent, false); - return new RvHolder3(view); - } else { - view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_page_1p, parent, false); - return new RvHolder1(view); - } - } - - @Override - public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { - - - if (holder instanceof RvHolder1) { - Page page = pageList.get(position); - ((RvHolder1) holder).title.setText(page.getTitle() + ""); - ((RvHolder1) holder).sendTime.setText(page.getSendtime()); - if (page.getComments() != null) - ((RvHolder1) holder).comment.setText(page.getComments().size() + ""); - if (page.getFavors() != null) - ((RvHolder1) holder).getGood.setText(page.getFavors().size() + ""); - if (page.getImages() != null && page.getImages().size() >= 1) { - ((RvHolder1) holder).image1.setImageBitmap(BitmapFactory.decodeFile(page.getImages().get(0))); -// ((RvHolder1) holder).image1.setMaxHeight(((RvHolder1) holder).image1.getWidth()); - } - - //删除 - ((RvHolder1) holder).delete.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - deleteItem(position); - } - }); - - //跳转到展示页 - ((RvHolder1) holder).title.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - // -// Intent intent = new Intent(v.getContext(), 展示页.class); -// startActivity() - } - }); - - } - if (holder instanceof RvHolder3) { - Page page = pageList.get(position); - ((RvHolder3) holder).title.setText(page.getTitle() + ""); - ((RvHolder3) holder).sendTime.setText(page.getSendtime()); - if (page.getComments() != null) - ((RvHolder3) holder).comment.setText(page.getComments().size() + ""); - if (page.getFavors() != null) - ((RvHolder3) holder).getGood.setText(page.getFavors().size() + ""); - ((RvHolder3) holder).image1.setImageBitmap(BitmapFactory.decodeFile(page.getImages().get(0))); - ((RvHolder3) holder).image2.setImageBitmap(BitmapFactory.decodeFile(page.getImages().get(1))); - ((RvHolder3) holder).image3.setImageBitmap(BitmapFactory.decodeFile(page.getImages().get(2))); - - //删除 - ((RvHolder3) holder).delete.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - deleteItem(position); - } - }); - - //跳转到展示页 - ((RvHolder3) holder).title.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - //跳转到展示页o - - } - }); - } - } - - @Override - public int getItemViewType(int position) { - return pageList.get(position).getImages().size() > 2 ? 3 : 1; - } - - private void deleteItem(int position) { - AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);//通过AlertDialog.Builder创建出一个AlertDialog的实例 -// dialog.setTitle("This is Dialog");//设置对话框的标题 - dialog.setMessage("是否确定删除该文章?");//设置对话框的内容 - dialog.setCancelable(true);//设置对话框是否可以取消 - dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {//确定按钮的点击事件 - @Override - public void onClick(DialogInterface dialog, int which) { - LitePal.delete(New.class, pageList.get(position).getId()); - pageList.remove(position); - notifyItemRemoved(position); - notifyDataSetChanged(); - } - }); - dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {//取消按钮的点击事件 - @Override - public void onClick(DialogInterface dialog, int which) { - } - }); - dialog.show(); - } - - @Override - public int getItemCount() { - return pageList == null ? 0 : pageList.size(); - } - - public static class RvHolder1 extends RecyclerView.ViewHolder { - TextView title, sendTime, getGood, comment; - ImageView image1; - ImageButton delete; - - public RvHolder1(@NonNull View itemView) { - super(itemView); - title = itemView.findViewById(R.id.title); - sendTime = itemView.findViewById(R.id.sendTime); - getGood = itemView.findViewById(R.id.getGood); - comment = itemView.findViewById(R.id.comment); - delete = itemView.findViewById(R.id.delete); - image1 = itemView.findViewById(R.id.p1); - } - } - - - public static class RvHolder3 extends RecyclerView.ViewHolder { - TextView title, sendTime, getGood, comment; - ImageView image1, image2, image3; - ImageButton delete; - - public RvHolder3(@NonNull View itemView) { - super(itemView); - - - title = itemView.findViewById(R.id.title); - sendTime = itemView.findViewById(R.id.sendTime); - getGood = itemView.findViewById(R.id.getGood); - comment = itemView.findViewById(R.id.comment); - delete = itemView.findViewById(R.id.delete); - image1 = itemView.findViewById(R.id.p1); - image2 = itemView.findViewById(R.id.p2); - image3 = itemView.findViewById(R.id.p3); - } - } - - -} - diff --git a/src/mad_final/app/src/main/java/com/example/mad_final/Adapter/MyVideoRvAdapter.java b/src/mad_final/app/src/main/java/com/example/mad_final/Adapter/MyVideoRvAdapter.java deleted file mode 100644 index f77d9390160fcebe31505d5e97869e2667ec96ba..0000000000000000000000000000000000000000 --- a/src/mad_final/app/src/main/java/com/example/mad_final/Adapter/MyVideoRvAdapter.java +++ /dev/null @@ -1,193 +0,0 @@ -package com.example.mad_final.Adapter; - -import android.content.Context; -import android.os.Bundle; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.animation.Animation; -import android.view.animation.TranslateAnimation; -import android.widget.CheckBox; -import android.widget.ImageButton; -import android.widget.TextView; -import android.widget.Toast; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.example.mad_final.DataStruct.Comment; -import com.example.mad_final.DataStruct.User; -import com.example.mad_final.DataStruct.Video; -import com.example.mad_final.Listener.CommentButtonListener; -import com.example.mad_final.R; - -import org.litepal.LitePal; - -import java.util.List; - -import cn.jzvd.JzvdStd; -import de.hdodenhof.circleimageview.CircleImageView; - -import static android.view.animation.Animation.RELATIVE_TO_SELF; - -public class MyVideoRvAdapter extends RecyclerView.Adapter { - private Context mContext; - private User curUser = null; - private List