diff --git a/app/build.gradle b/app/build.gradle index 5e93ce6..1f6cb0d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -28,6 +28,7 @@ dependencies { implementation 'androidx.navigation:navigation-fragment:2.0.0' implementation 'androidx.navigation:navigation-ui:2.0.0' implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0' + implementation 'androidx.recyclerview:recyclerview:1.0.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 03888b5..3a8fd60 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,7 +2,8 @@ - + + - + + @@ -22,6 +24,7 @@ + android:theme="@style/AppTheme.NoActionBar" /> + \ No newline at end of file diff --git a/app/src/main/java/hunnu/sj/raise_money/News.java b/app/src/main/java/hunnu/sj/raise_money/News.java new file mode 100644 index 0000000..439f7a8 --- /dev/null +++ b/app/src/main/java/hunnu/sj/raise_money/News.java @@ -0,0 +1,18 @@ +package hunnu.sj.raise_money; + +public class News { + private String title; + private String content; + public String getTitle() { + return title; + } + public void setTitle(String title) { + this.title = title; + } + public String getContent() { + return content; + } + public void setContent(String content) { + this.content = content; + } +} \ No newline at end of file diff --git a/app/src/main/java/hunnu/sj/raise_money/NewsAdapter.java b/app/src/main/java/hunnu/sj/raise_money/NewsAdapter.java new file mode 100644 index 0000000..17174c6 --- /dev/null +++ b/app/src/main/java/hunnu/sj/raise_money/NewsAdapter.java @@ -0,0 +1,31 @@ +package hunnu.sj.raise_money; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.TextView; + +import java.util.List; + +public class NewsAdapter extends ArrayAdapter { + private int resourceId; + public NewsAdapter(Context context, int textViewResourceId, List objects) { + super(context, textViewResourceId, objects); + resourceId = textViewResourceId; + } + @Override + public View getView(int position, View convertView, ViewGroup parent) { + News news = getItem(position); + View view; + if (convertView == null) { + view = LayoutInflater.from(getContext()).inflate(resourceId, null); + } else { + view = convertView; + } + TextView newsTitleText =(TextView) view.findViewById(R.id.news_title); + newsTitleText.setText(news.getTitle()); + return view; + } +} \ No newline at end of file diff --git a/app/src/main/java/hunnu/sj/raise_money/NewsContentActivity.java b/app/src/main/java/hunnu/sj/raise_money/NewsContentActivity.java new file mode 100644 index 0000000..30b1c03 --- /dev/null +++ b/app/src/main/java/hunnu/sj/raise_money/NewsContentActivity.java @@ -0,0 +1,32 @@ +package hunnu.sj.raise_money; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.util.Log; +import android.view.Window; + +import androidx.appcompat.app.AppCompatActivity; + +public class NewsContentActivity extends AppCompatActivity{ + public static void actionStart(Context context, String newsTitle, String newsContent) { + Intent intent = new Intent(context, NewsContentActivity.class); + intent.putExtra("news_title", newsTitle); + intent.putExtra("news_content", newsContent); + context.startActivity(intent); + } + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + requestWindowFeature(Window.FEATURE_NO_TITLE); + Log.v("news_title","here"); + setContentView(R.layout.news_content); + String newsTitle = getIntent().getStringExtra("news_title"); // 获取传入的新闻标题 + String newsContent = getIntent().getStringExtra("news_content"); // 获取传入的新闻内容 + NewsContentFragment newsContentFragment = (NewsContentFragment) + getFragmentManager().findFragmentById(R.id.news_content_fragment); + newsContentFragment.refresh(newsTitle, newsContent); // 刷新NewsContentFragment界面 + } + + +} diff --git a/app/src/main/java/hunnu/sj/raise_money/NewsContentFragment.java b/app/src/main/java/hunnu/sj/raise_money/NewsContentFragment.java new file mode 100644 index 0000000..b5123f2 --- /dev/null +++ b/app/src/main/java/hunnu/sj/raise_money/NewsContentFragment.java @@ -0,0 +1,27 @@ +package hunnu.sj.raise_money; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import android.app.Fragment; + +public class NewsContentFragment extends Fragment { + private View view; + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + view = inflater.inflate(R.layout.fragment_news_content, container, false); + return view; + } + public NewsContentFragment(){} + public void refresh(String newsTitle, String newsContent) { + View visibilityLayout = view.findViewById(R.id.visibility_layout); + visibilityLayout.setVisibility(View.VISIBLE); + TextView newsTitleText = (TextView) view.findViewById (R.id.news_title); + TextView newsContentText = (TextView) view.findViewById(R.id.news_content); + newsTitleText.setText(newsTitle); // 刷新新闻的标题 + newsContentText.setText(newsContent); // 刷新新闻的内容 + } +} \ No newline at end of file diff --git a/app/src/main/java/hunnu/sj/raise_money/NewsTitleFragment.java b/app/src/main/java/hunnu/sj/raise_money/NewsTitleFragment.java new file mode 100644 index 0000000..1881d8d --- /dev/null +++ b/app/src/main/java/hunnu/sj/raise_money/NewsTitleFragment.java @@ -0,0 +1,69 @@ +package hunnu.sj.raise_money; + +import android.app.Activity; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.ListView; +import android.app.Fragment; + +import java.util.ArrayList; +import java.util.List; + +public class NewsTitleFragment extends Fragment implements AdapterView.OnItemClickListener { + private ListView newsTitleListView; + private List newsList; + private NewsAdapter adapter; + private boolean isTwoPane; + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + newsList = getNews(); // 初始化新闻数据 + adapter = new NewsAdapter(activity, R.layout.news_item, newsList); + } + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.fragment_news_title, container, false); + newsTitleListView = (ListView) view.findViewById(R.id.news_title_list_view); + newsTitleListView.setAdapter(adapter); + newsTitleListView.setOnItemClickListener(this); + return view; + } + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + isTwoPane = false; // 可以找到news_content_layout布局时,为双页模式 + } + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + News news = newsList.get(position); + if (isTwoPane) { + // 如果是双页模式,则刷新NewsContentFragment中的内容 + NewsContentFragment newsContentFragment = (NewsContentFragment) getFragmentManager().findFragmentById(R.id.news_content_fragment); + newsContentFragment.refresh(news.getTitle(), news.getContent()); + } else { + // 如果是单页模式,则直接启动NewsContentActivity + NewsContentActivity.actionStart(getActivity(), news.getTitle(), news.getContent()); + } + } + private List getNews() { + List newsList = new ArrayList(); + News news1 = new News(); + news1.setTitle("Succeed in College as a Learning Disabled Student"); + news1.setContent("College freshmen will soon learn to live with a" + +"roommate, adjust to a new social scene and survive less-than-stellar" + +"dining hall food. Students with learning disabilities will face these" + +"transitions while also grappling with a few more hurdles."); + newsList.add(news1); + News news2 = new News(); + news2.setTitle("Google Android exec poached by China's Xiaomi"); + news2.setContent("China's Xiaomi has poached a key Google executive"+ + "involved in the tech giant's Android phones, in a move seen as a coup"+ + " for the rapidly growing Chinese smartphone maker."); + newsList.add(news2); + return newsList; + } +} \ No newline at end of file diff --git a/app/src/main/java/hunnu/sj/raise_money/dummy/DummyContent.java b/app/src/main/java/hunnu/sj/raise_money/dummy/DummyContent.java new file mode 100644 index 0000000..01e2250 --- /dev/null +++ b/app/src/main/java/hunnu/sj/raise_money/dummy/DummyContent.java @@ -0,0 +1,72 @@ +package hunnu.sj.raise_money.dummy; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Helper class for providing sample content for user interfaces created by + * Android template wizards. + *

+ * TODO: Replace all uses of this class before publishing your app. + */ +public class DummyContent { + + /** + * An array of sample (dummy) items. + */ + public static final List ITEMS = new ArrayList(); + + /** + * A map of sample (dummy) items, by ID. + */ + public static final Map ITEM_MAP = new HashMap(); + + private static final int COUNT = 25; + + static { + // Add some sample items. + for (int i = 1; i <= COUNT; i++) { + addItem(createDummyItem(i)); + } + } + + private static void addItem(DummyItem item) { + ITEMS.add(item); + ITEM_MAP.put(item.id, item); + } + + private static DummyItem createDummyItem(int position) { + return new DummyItem(String.valueOf(position), "Item " + position, makeDetails(position)); + } + + private static String makeDetails(int position) { + StringBuilder builder = new StringBuilder(); + builder.append("Details about Item: ").append(position); + for (int i = 0; i < position; i++) { + builder.append("\nMore details information here."); + } + return builder.toString(); + } + + /** + * A dummy item representing a piece of content. + */ + public static class DummyItem { + public final String id; + public final String content; + public final String details; + + public DummyItem(String id, String content, String details) { + this.id = id; + this.content = content; + this.details = details; + } + + @Override + public String toString() { + return content; + } + } +} diff --git a/app/src/main/res/layout/activity_news_content.xml b/app/src/main/res/layout/activity_news_content.xml new file mode 100644 index 0000000..e0b7450 --- /dev/null +++ b/app/src/main/res/layout/activity_news_content.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml index 04b67fd..175e74d 100644 --- a/app/src/main/res/layout/content_main.xml +++ b/app/src/main/res/layout/content_main.xml @@ -17,4 +17,10 @@ app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:navGraph="@navigation/mobile_navigation" /> + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_news_content.xml b/app/src/main/res/layout/fragment_news_content.xml new file mode 100644 index 0000000..14904ba --- /dev/null +++ b/app/src/main/res/layout/fragment_news_content.xml @@ -0,0 +1,26 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_news_title.xml b/app/src/main/res/layout/fragment_news_title.xml new file mode 100644 index 0000000..a003c77 --- /dev/null +++ b/app/src/main/res/layout/fragment_news_title.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/news_content.xml b/app/src/main/res/layout/news_content.xml new file mode 100644 index 0000000..848cbf6 --- /dev/null +++ b/app/src/main/res/layout/news_content.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/news_item.xml b/app/src/main/res/layout/news_item.xml new file mode 100644 index 0000000..7fa254e --- /dev/null +++ b/app/src/main/res/layout/news_item.xml @@ -0,0 +1,17 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 4ab4520..4639294 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -5,4 +5,5 @@ 8dp 176dp 16dp + 16dp \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b4ef3f2..3e41eed 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -18,4 +18,7 @@ HeadPortrait 申请帮助 onUploadPic + + + Hello blank fragment