Skip to content
This repository was archived by the owner on Nov 5, 2020. It is now read-only.

Commit 7f44f59

Browse files
committed
feat: 显示主要部门通知
1 parent 786b0d0 commit 7f44f59

File tree

10 files changed

+310
-33
lines changed

10 files changed

+310
-33
lines changed

app/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,6 @@ dependencies {
3131
implementation 'com.android.support:design:26.1.0'
3232
implementation 'com.chanven.lib:cptr:1.1.0'
3333
implementation 'com.github.medyo:android-about-page:1.2.4'
34+
implementation 'com.android.support:recyclerview-v7:26.1.0'
35+
implementation 'com.android.support:cardview-v7:22.2.0'
3436
}
Binary file not shown.

app/src/main/java/io/github/zhaoqi99/snnu_android/MainActivity.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,11 @@ protected void onCreate(Bundle savedInstanceState) {
4444
@Override
4545
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
4646
switch (menuItem.getItemId()) {
47-
case R.id.navigation_item_home:
47+
case R.id.navigation_item_notice:
4848
Toast.makeText(MainActivity.this, "x", Toast.LENGTH_SHORT).show();
49+
switchToNotice();
50+
break;
51+
case R.id.navigation_item_news:
4952
switchToNews();
5053
break;
5154
case R.id.navigation_item_about:
@@ -57,7 +60,7 @@ public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
5760
}
5861
});
5962
setSupportActionBar(mToolBar);
60-
switchToNews();
63+
switchToNotice();
6164
}
6265

6366

@@ -96,7 +99,15 @@ private void switchToAbout() {
9699
// mToolbar.setTitle(R.string.navigation_book);
97100
}
98101
private void switchToNews() {
99-
getSupportFragmentManager().beginTransaction().replace(R.id.frame_content, new NewsFragment()).commit();
102+
NewsFragment nf= new NewsFragment();
103+
nf.setType("新闻");
104+
getSupportFragmentManager().beginTransaction().replace(R.id.frame_content, nf).commit();
105+
// mToolbar.setTitle(R.string.navigation_book);
106+
}
107+
private void switchToNotice() {
108+
NewsFragment nf= new NewsFragment();
109+
nf.setType("通知");
110+
getSupportFragmentManager().beginTransaction().replace(R.id.frame_content,nf ).commit();
100111
// mToolbar.setTitle(R.string.navigation_book);
101112
}
102113
// @Override
Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
11
package io.github.zhaoqi99.snnu_android;
22

33

4+
import android.os.AsyncTask;
45
import android.os.Bundle;
56
import android.support.design.widget.TabLayout;
67
import android.support.v4.app.Fragment;
7-
import android.support.v4.app.FragmentActivity;
8-
import android.support.v4.app.FragmentManager;
98
import android.support.v4.view.ViewPager;
109
import android.view.LayoutInflater;
1110
import android.view.View;
1211
import android.view.ViewGroup;
1312

1413
import java.util.ArrayList;
1514
import java.util.List;
16-
15+
import org.ksoap2.serialization.SoapObject;
16+
import org.ksoap2.serialization.SoapSerializationEnvelope;
17+
import org.ksoap2.transport.HttpTransportSE;
1718

1819
/**
1920
* A simple {@link Fragment} subclass.
@@ -26,6 +27,11 @@ public class NewsFragment extends Fragment {
2627
private List<String> mTabTitleList;
2728
private List<Fragment> mFragmentList;
2829

30+
public void setType(String type) {
31+
this.type = type;
32+
}
33+
34+
private String type;
2935
public NewsFragment() {
3036
// Required empty public constructor
3137
}
@@ -34,25 +40,33 @@ public NewsFragment() {
3440
@Override
3541
public View onCreateView(LayoutInflater inflater, ViewGroup container,
3642
Bundle savedInstanceState) {
37-
View view= inflater.inflate(R.layout.fragment_news, container, false);
38-
tablayout=view.findViewById(R.id.tablayout);
39-
mViewPager=view.findViewById(R.id.mViewPager);
43+
View view = inflater.inflate(R.layout.fragment_news, container, false);
44+
tablayout = view.findViewById(R.id.tablayout);
45+
mViewPager = view.findViewById(R.id.mViewPager);
4046

4147
InitTab();
4248
return view;
4349
}
50+
4451
//初始化tab
45-
private void InitTab(){
46-
mFragmentList = new ArrayList<Fragment>();
47-
mFragmentList.add(new Tab());
48-
mFragmentList.add(new Tab());
52+
private void InitTab() {
4953

54+
mFragmentList = new ArrayList<Fragment>();
5055
mTabTitleList = new ArrayList<String>();
51-
mTabTitleList.add("新闻");
52-
mTabTitleList.add("通知");
56+
57+
String keys[]={"学校主页","学生处","计算机科学学院","教务处"};
58+
for (String s:keys) {
59+
Tab t=new Tab();
60+
t.setDep(s);
61+
t.setType(type);
62+
mFragmentList.add(t);
63+
mTabTitleList.add(s);
5364

54-
mAdapter = new mViewPagerFragmentAdapter(getChildFragmentManager(), mFragmentList,mTabTitleList);
65+
}
66+
67+
mAdapter = new mViewPagerFragmentAdapter(getChildFragmentManager(), mFragmentList, mTabTitleList);
5568
mViewPager.setAdapter(mAdapter);
5669
tablayout.setupWithViewPager(mViewPager);
5770
}
71+
5872
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package io.github.zhaoqi99.snnu_android;
2+
3+
import java.io.Serializable;
4+
5+
public class NoticeMessage implements Serializable {
6+
private String Title;
7+
private String Date;
8+
private String Department;
9+
private String Type;
10+
private String Link;
11+
12+
public NoticeMessage(String Title, String Date, String Link, String Type, String Department) {
13+
this.Date = Date;
14+
this.Title = Title;
15+
this.Link = Link;
16+
this.Type = Type;
17+
this.Department = Department;
18+
}
19+
20+
public String GetTitle() {
21+
return this.Title;
22+
}
23+
24+
public String GetLink() {
25+
return this.Link;
26+
}
27+
28+
public String GetType() {
29+
return this.Type;
30+
}
31+
32+
public String GetDate() {
33+
return this.Date;
34+
}
35+
36+
public String GetDepartment() {
37+
return this.Department;
38+
}
39+
}
Lines changed: 130 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,157 @@
11
package io.github.zhaoqi99.snnu_android;
22

33

4+
import android.os.AsyncTask;
45
import android.os.Bundle;
56
import android.support.v4.app.Fragment;
7+
import android.support.v7.widget.LinearLayoutManager;
8+
import android.support.v7.widget.RecyclerView;
69
import android.view.LayoutInflater;
710
import android.view.View;
811
import android.view.ViewGroup;
912

13+
import org.ksoap2.serialization.SoapObject;
14+
import org.ksoap2.serialization.SoapSerializationEnvelope;
15+
import org.ksoap2.transport.HttpTransportSE;
16+
17+
import java.util.ArrayList;
18+
import java.util.List;
19+
1020

1121
/**
1222
* A simple {@link Fragment} subclass.
1323
*/
1424
public class Tab extends Fragment {
25+
private RecyclerView recyclerView;
26+
private mNoticeRecyclerViewAdapter mNoticeRecyclerViewAdapter;
27+
28+
public void setDep(String dep) {
29+
this.dep = dep;
30+
}
31+
32+
private String dep;
1533

34+
public void setType(String type) {
35+
this.type = type;
36+
}
37+
38+
private String type;
39+
View view;
40+
ArrayList<NoticeMessage> newsList = new ArrayList<>();
41+
String result;
1642

1743
public Tab() {
1844
// Required empty public constructor
1945
}
2046

21-
2247
@Override
2348
public View onCreateView(LayoutInflater inflater, ViewGroup container,
2449
Bundle savedInstanceState) {
2550
// Inflate the layout for this fragment
26-
return inflater.inflate(R.layout.fragment_tab, container, false);
51+
QueryTask queryTask=new QueryTask();
52+
queryTask.execute(dep);
53+
54+
view = inflater.inflate(R.layout.fragment_tab, container, false);
55+
recyclerView = view.findViewById(R.id.recycler_view);
56+
return view;
57+
}
58+
59+
private class QueryTask extends AsyncTask<String, Integer, String> {
60+
61+
@Override
62+
protected String doInBackground(String... strings) {
63+
try {
64+
getRemoteInfo(strings[0]);
65+
} catch (Exception e) {
66+
e.printStackTrace();
67+
}
68+
return result;
69+
}
70+
71+
@Override
72+
protected void onPostExecute(String result) {
73+
newsList.add(new NoticeMessage("title", "date", "link", "dasda", "da"));
74+
newsList=getNotice(result);
75+
mNoticeRecyclerViewAdapter = new mNoticeRecyclerViewAdapter(newsList);
76+
LinearLayoutManager layoutManager = new LinearLayoutManager(view.getContext());
77+
recyclerView.setLayoutManager(layoutManager);
78+
recyclerView.setAdapter(mNoticeRecyclerViewAdapter);
79+
}
80+
81+
private void getRemoteInfo(String dep) throws Exception {
82+
String Target_URL = "";
83+
String namespace = "";
84+
String methodName = " ";
85+
if(type=="通知")
86+
{
87+
Target_URL = "http://webxml.zhaoqi.vip/Notice.asmx";
88+
namespace = "http://webxml.zhaoqi.vip/";
89+
methodName = "getNoticeByDepartment ";
90+
}
91+
else
92+
{
93+
Target_URL = "http://webxml.zhaoqi.vip/News.asmx";
94+
namespace = "http://webxml.zhaoqi.vip/";
95+
methodName = "getNewsByDepartment ";
96+
}
97+
SoapObject request = new SoapObject(namespace, methodName);
98+
request.addProperty("dep", dep);
99+
SoapSerializationEnvelope envelope = new
100+
SoapSerializationEnvelope(SoapSerializationEnvelope.VER12);
101+
envelope.bodyOut = request;
102+
envelope.dotNet = true;
103+
HttpTransportSE httpTransportSE = new HttpTransportSE(Target_URL);
104+
httpTransportSE.call(null, envelope);
105+
SoapObject object = (SoapObject) envelope.bodyIn;
106+
result = object.getProperty(0).toString();
107+
}
27108
}
28109

110+
private ArrayList<NoticeMessage> getNotice(String str) {
111+
String str_Title = "";
112+
String str_Date = "";
113+
String str_Department = "";
114+
String str_Type = "";
115+
String str_Link = "";
116+
ArrayList<NoticeMessage> messageList = new ArrayList<>();
117+
118+
for (int i = 0; i < str.length(); i++) {
119+
if (i + 5 < str.length() && str.substring(i, i + 5).equals("Title")) {
120+
121+
i += 6;
122+
int tag1 = str.indexOf(';', i);
123+
if (str.charAt(tag1 + 1) != ' ') {
124+
tag1++;
125+
tag1 = str.indexOf(';', tag1);
126+
}
127+
str_Title = str.substring(i, tag1);//"Title";
128+
i = tag1 + 1;
129+
i += 6;
130+
int tag2 = str.indexOf(';', i);
131+
132+
str_Link = str.substring(i, tag2);//"Link";
133+
i = tag2 + 1;
134+
i += 6;
135+
int tag3 = str.indexOf(';', i);
136+
int tag3x = str.indexOf("T", i);
137+
str_Date = str.substring(i, tag3x);//"Data";
138+
i = tag3 + 1;
139+
i += 6;
140+
int tag4 = str.indexOf(';', i);
141+
142+
str_Type = str.substring(i, tag4);//"Type";
143+
i = tag4 + 1;
144+
i += 12;
145+
int tag5 = str.indexOf(';', i);
146+
147+
str_Department = str.substring(i, tag5);//"Department";
148+
i = tag5 + 1;
149+
if (str_Title.length() > 17)
150+
str_Title = str_Title.substring(0, 17) + "...";
151+
NoticeMessage message = new NoticeMessage(" " + str_Title, "时间:" + str_Date, str_Link, str_Type, str_Department);
152+
messageList.add(message);
153+
}
154+
}
155+
return messageList;
156+
}
29157
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package io.github.zhaoqi99.snnu_android;
2+
3+
import android.support.v7.widget.RecyclerView;
4+
import android.view.LayoutInflater;
5+
import android.view.View;
6+
import android.widget.TextView;
7+
import android.view.ViewGroup;
8+
9+
import java.util.List;
10+
11+
public class mNoticeRecyclerViewAdapter extends RecyclerView.Adapter<mNoticeRecyclerViewAdapter.ViewHolder>{
12+
private List<NoticeMessage> messageList;
13+
14+
public mNoticeRecyclerViewAdapter( List<NoticeMessage> messageList)
15+
{
16+
this.messageList = messageList;
17+
}
18+
19+
static class ViewHolder extends RecyclerView.ViewHolder{
20+
21+
TextView Title;
22+
TextView Date;
23+
TextView Department;
24+
public ViewHolder(View view)
25+
{
26+
super(view);
27+
Title = (TextView)view.findViewById(R.id.txt_Title);
28+
Date = (TextView)view.findViewById(R.id.txt_Date);
29+
Department = (TextView)view.findViewById(R.id.txt_Department);
30+
}
31+
}
32+
@Override
33+
public int getItemCount() {
34+
return messageList.size();
35+
}
36+
37+
@Override
38+
public void onBindViewHolder(ViewHolder holder, int position) {
39+
NoticeMessage message = messageList.get(position);
40+
holder.Title.setText(message.GetTitle());
41+
holder.Date.setText(message.GetDate());
42+
holder.Department.setText(message.GetDepartment());
43+
}
44+
45+
@Override
46+
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
47+
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.notice_recycler_layout,parent,false);
48+
ViewHolder holder = new ViewHolder(view);
49+
return holder;
50+
}
51+
}

app/src/main/res/layout/fragment_tab.xml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@
1111
android:orientation="vertical">
1212

1313

14-
<!--<android.support.v7.widget.RecyclerView-->
15-
<!--android:id="@+id/recycler_view"-->
16-
<!--android:layout_width="match_parent"-->
17-
<!--android:layout_height="match_parent">-->
18-
<!--</android.support.v7.widget.RecyclerView>-->
14+
<android.support.v7.widget.RecyclerView
15+
android:id="@+id/recycler_view"
16+
android:layout_width="match_parent"
17+
android:layout_height="wrap_content">
18+
</android.support.v7.widget.RecyclerView>
1919
<TextView
2020
android:layout_width="match_parent"
2121
android:layout_height="match_parent"

0 commit comments

Comments
 (0)