首页合并4.0

master
Toyga 3 years ago
parent 3458d9bf93
commit d91d8b5b22

@ -7,9 +7,10 @@
tools:targetApi="n">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<application
android:name=".Utils.Data"
android:name="org.litepal.LitePalApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
@ -17,30 +18,55 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.LeudaemiaLikeMe">
<activity android:name=".Activity.NewsSearchResultActivity"></activity>
<activity android:name=".Activity.NewsSearchActivity" />
<activity android:name=".Activity.RegisterActivity"></activity>
<activity android:name=".Activity.AddEventActivity" />
<activity android:name=".Activity.MyInfoActivity"></activity>
<activity android:name=".Activity.AddClock" />
<activity android:name=".Activity.AlarmAlert" />
<activity android:name=".ClockDetail" />
<activity android:name=".Activity.AnswerActivity" />
<activity android:name=".Activity.QuestionDetailActivity" />
<activity android:name=".Activity.BlogDetailActivity"/>
<activity android:name=".Activity.BlogSearchResultActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
></activity>
<activity
android:name=".Activity.BlogSearchActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
/>
<meta-data
android:name="com.google.android.actions"
android:resource="@xml/network_security_config" />
<activity android:name=".Activity.BaseActivity" />
<activity android:name=".Activity.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<activity
android:name=".Activity.BaseActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
/>
<activity
android:name=".Activity.MainActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
>
</activity>
<activity android:name=".Activity.ChatActivity" />
<activity android:name=".Activity.AttentionActivity" />
<activity android:name=".Activity.HistoryActivity" />
<activity android:name=".Activity.CollectActivity" />
<activity android:name=".Activity.SafetyActivity" />
<activity
android:name=".Activity.ChatActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
/>
<activity android:name=".Activity.AttentionActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
/>
<activity android:name=".Activity.HistoryActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
/>
<activity android:name=".Activity.CollectActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
/>
<activity android:name=".Activity.SafetyActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
/>
<activity android:name=".Activity.AboutActivity" />
<activity android:name=".Activity.MyQuestionActivity" />
<activity android:name=".Activity.ConcernedProblemActivity" />
<activity android:name=".Activity.DetailActivity" />
<activity android:name=".Activity.MdctRmdActivity" />
<activity android:name=".Activity.SearchActivity" />
<activity android:name=".Activity.InfoActivity" />
@ -49,8 +75,18 @@
<activity android:name=".Activity.SendQuestionActivity" />
<activity android:name=".Activity.APNActivity" />
<activity android:name=".Activity.EventActivity" />
<activity android:name=".Activity.LoginActivity" />
<activity android:name=".Activity.NewsDetailActivity" />
<receiver
android:name=".CallAlarm"
android:process=".remote" />
<activity android:name=".Activity.LoginActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

@ -3,11 +3,14 @@
<dbname value="leukemia" />
<version value="1" />
<version value="4" />
<list>
<mapping class="com.example.leudaemialikeme.Model.Owner"/>
<mapping class="com.example.leudaemialikeme.Model.Friend"/>
<mapping class="com.example.leudaemialikeme.Model.Message"/>
<mapping class="com.example.leudaemialikeme.Model.Clock"/>
<mapping class="com.example.leudaemialikeme.Model.Event"/>
</list>
</litepal>

@ -1,14 +1,105 @@
package com.example.leudaemialikeme.Activity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.HorizontalScrollView;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import com.example.leudaemialikeme.R;
import androidx.fragment.app.FragmentManager;
import androidx.viewpager.widget.ViewPager;
public class APNActivity extends BaseActivity {
import com.example.leudaemialikeme.Adapter.APNPageActivityAdapter;
import com.example.leudaemialikeme.R;
public class APNActivity extends BaseActivity implements ViewPager.OnPageChangeListener{
private static final String ARG_CHANNEL_LIST = "channel_list";
private View view=null; // 碎片的布局实例
private ViewPager viewPager; //内导航的碎片的容器
private RadioGroup rgChannel=null; // 内导航由单选按钮组构成
private HorizontalScrollView hvChannel=null; //单选按钮组可滚动动
private ImageView apn_back;
private String[] channelList = {"回答","帖子"}; //默认的内导航栏目
private APNPageActivityAdapter adapter; //viewPager 的适配器
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_apn);
viewPager = findViewById(R.id.vpNewsList);
initViewPager(); //设置 ViewPager
rgChannel = findViewById(R.id.rgChannel);
hvChannel = findViewById(R.id.hvChannel);
initTab(getLayoutInflater());
rgChannel.setOnCheckedChangeListener(
new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
viewPager.setCurrentItem(checkedId);
}
}
);
apn_back = findViewById(R.id.apn_back);
apn_back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
private void initViewPager() {
FragmentManager fragmentManager = getSupportFragmentManager();
adapter = new APNPageActivityAdapter(fragmentManager, channelList);
//参数 channelList 将被适配器用来在动态切换碎片的时候实时创建碎片 //设置 ViewPager 的适配器
viewPager.setAdapter(adapter);
viewPager.setOffscreenPageLimit(2);
//设置显示第 1 个碎片
viewPager.setCurrentItem(0);
//设置 ViewPager 的切换监听
viewPager.addOnPageChangeListener(this);
}
private void initTab(LayoutInflater inflater) {
for(int i=0;i<channelList.length;i++){
RadioButton rb=(RadioButton)inflater.inflate(R.layout.invitation_tab_rb,null);
rb.setId(i);
rb.setText(channelList[i]);
RadioGroup.LayoutParams params = new
RadioGroup.LayoutParams(RadioGroup.LayoutParams.WRAP_CONTENT,
RadioGroup.LayoutParams.WRAP_CONTENT);
rgChannel.addView(rb,params);
}
rgChannel.check(0);
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
setTab(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
private void setTab(int idx){
RadioButton rb=(RadioButton)rgChannel.getChildAt(idx);
rb.setChecked(true);
int left=rb.getLeft();
int width=rb.getMeasuredWidth();
DisplayMetrics metrics=new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int screenWidth=metrics.widthPixels;
int len=left+width/2-screenWidth/2;
hvChannel.smoothScrollTo(len,0);
}
}

@ -0,0 +1,131 @@
package com.example.leudaemialikeme.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;
import com.example.leudaemialikeme.CallAlarm;
import com.example.leudaemialikeme.Model.Clock;
import com.example.leudaemialikeme.R;
import java.util.Calendar;
import static com.example.leudaemialikeme.Activity.MdctRmdActivity.list;
import static com.example.leudaemialikeme.Activity.MdctRmdActivity.timeAdapter;
public class AddClock extends BaseActivity implements View.OnClickListener {
private Calendar calendar;
private TextView show_hour;
private TextView show_minute;
private EditText content_name;
private EditText content_dosage;
private Button set;
private Button save;
private ImageView back;
String hourformat;
String minuteformat;
Clock clock = new Clock();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_clock);
show_hour = findViewById(R.id.hour);
show_minute = findViewById(R.id.minute);
content_name = findViewById(R.id.content_name);
content_dosage = findViewById(R.id.content_dosage);
set = findViewById(R.id.set_time);
set.setOnClickListener(this);
save = findViewById(R.id.save);
back = findViewById(R.id.back_list_clock);
back.setImageResource(R.drawable.ic_back);
back.setOnClickListener(this);
save.setOnClickListener(this);
calendar = Calendar.getInstance();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.set_time:
calendar.setTimeInMillis(System.currentTimeMillis());
int mhour = calendar.get(Calendar.HOUR_OF_DAY);
int mminute = calendar.get(Calendar.MINUTE);
new TimePickerDialog(AddClock.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
//calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
hourformat = format(hourOfDay);
minuteformat = format(minute);
Toast.makeText(AddClock.this, "" + hourformat + ":" + minuteformat, Toast.LENGTH_SHORT).show();
show_hour.setText(hourformat);
show_minute.setText(minuteformat);
}
}, mhour, mminute, true).show();
break;
case R.id.save:
Intent intent = new Intent(AddClock.this, CallAlarm.class);
PendingIntent sender = PendingIntent.getBroadcast(
AddClock.this, 0, intent, 0);
AlarmManager am;
am = (AlarmManager) getSystemService(ALARM_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
if (System.currentTimeMillis()>calendar.getTimeInMillis()+40000){
//加24小时
am.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis()+86400000, sender);
}else {
am.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
}
}
clock.setHour(hourformat);
clock.setMinute(minuteformat);
clock.setName("" + content_name.getText().toString());
clock.setDosage("" + content_dosage.getText().toString());
clock.setClockType(Clock.clock_open);
if (clock.getHour()!=null&&clock.getMinute()!=null) {
clock.save();
list.add(clock);
timeAdapter.notifyDataSetChanged();
Log.e("Listnumber======",list.size()+"");
finish();
}else {
Toast.makeText(this, "请选择闹钟时间", Toast.LENGTH_SHORT).show();
}
break;
case R.id.back_list_clock:
finish();
break;
}
}
private String format(int x) {
String s = "" + x;
if (s.length() == 1) {
s = "0" + s;
}
return s;
}
}

@ -0,0 +1,203 @@
package com.example.leudaemialikeme.Activity;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;
import com.example.leudaemialikeme.Model.Event;
import com.example.leudaemialikeme.R;
import org.litepal.LitePal;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
public class AddEventActivity extends BaseActivity {
public static final String EVENT_DAY = "event_day";
public static final String EVENT_MONTH= "event_month";
public static final String EVENT_INFO = "event_info";
public static final String EVENT_PLACE = "event_place";
public static final String EVENT_DOCTOR_NAME = "event_doctor_name";
public static final String EVENT_TIME = "event_time";
public static final String EVENT_CREATE_TIME = "event_create_time";
private TextView event_day,event_month,event_info;
private TextView event_place,event_doctor_name,event_time,event_create_time;
private String show_event_day,show_event_month,show_event_info;
private String show_event_place,show_event_doctor_name,show_event_time,show_event_create_time;
private ImageView delete,save;
private Button add_date,add_time;
private ImageView back;
DateFormat format= DateFormat.getDateTimeInstance();
Calendar calendar= Calendar.getInstance(Locale.CHINA);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_event);
event_day = findViewById(R.id.add_event_day);
event_month = findViewById(R.id.add_event_month);
event_info = findViewById(R.id.add_event_info);
event_place = findViewById(R.id.add_event_place);
event_doctor_name = findViewById(R.id.add_event_doctor_name);
event_time = findViewById(R.id.add_event_time);
event_create_time = findViewById(R.id.show_time);
delete = findViewById(R.id.delete_event);
save = findViewById(R.id.save_event);
add_date = findViewById(R.id.add_date);
add_time = findViewById(R.id.add_time);
back = findViewById(R.id.back_event_list);
Intent intent = getIntent();
show_event_day = intent.getStringExtra(EVENT_DAY);
show_event_month = intent.getStringExtra(EVENT_MONTH);
show_event_info = intent.getStringExtra(EVENT_INFO);
show_event_place = intent.getStringExtra(EVENT_PLACE);
show_event_doctor_name = intent.getStringExtra(EVENT_DOCTOR_NAME);
show_event_time = intent.getStringExtra(EVENT_TIME);
show_event_create_time = intent.getStringExtra(EVENT_CREATE_TIME);
event_day.setText(show_event_day);
event_month.setText(show_event_month);
event_info.setText(show_event_info);
event_place.setText(show_event_place);
event_doctor_name.setText(show_event_doctor_name);
event_time.setText(show_event_time);
event_create_time.setText(show_event_create_time);
//点击事项
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(AddEventActivity.this,EventActivity.class);
startActivity(intent);
}
});
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String deleteContent=event_info.getText().toString();
LitePal.deleteAll(Event.class,"event_info=?",deleteContent);
finish();
}
});
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//创建时间不为空,表明为修改
if(show_event_create_time!=null){
String inputDay = event_day.getText().toString();
String inputMonth = event_month.getText().toString();
String inputInfo = event_info.getText().toString();
String inputPlace = event_place.getText().toString();
String inputName = event_doctor_name.getText().toString();
String inputTime = event_time.getText().toString();
Event event = new Event();
event.setEvent_day(inputDay);
event.setEvent_month(inputMonth);
event.setEvent_info(inputInfo);
event.setEvent_place(inputPlace);
event.setEvent_doctor_name(inputName);
event.setEvent_time(inputTime);
// LitePal.where("ownerNetId = ?", String.valueOf(ownerNetId)).find(Friend.class);
event.updateAll("event_create_time=?",show_event_create_time);
finish();
}else{
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date date=new Date(System.currentTimeMillis());
String inputDay = event_day.getText().toString();
String inputMonth = event_month.getText().toString();
String inputInfo = event_info.getText().toString();
String inputPlace = event_place.getText().toString();
String inputName = event_doctor_name.getText().toString();
String inputTime = event_time.getText().toString();
Event event = new Event();
event.setEvent_day(inputDay);
event.setEvent_month(inputMonth);
event.setEvent_info(inputInfo);
event.setEvent_place(inputPlace);
event.setEvent_doctor_name(inputName);
event.setEvent_time(inputTime);
event.setEvent_create_time(simpleDateFormat.format(date));
if(inputInfo.equals(LitePal.find(Event.class,3))){
Toast.makeText(AddEventActivity.this,"该大事记已存在",Toast.LENGTH_LONG).show();
finish();
}
event.save();
Toast.makeText(AddEventActivity.this,"保存成功",Toast.LENGTH_SHORT).show();
finish();//操作完成结束当前活动
}
}
});
//获取选择的月,日
add_date.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showDatePickerDialog(AddEventActivity.this, 4, event_month,event_day, calendar);;
}
});
//获取选择的时间
add_time.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showTimePickerDialog(AddEventActivity.this, 4, event_time, calendar);
}
});
}
public static void showTimePickerDialog(Activity activity,int themeResId, final TextView event_time, Calendar calendar) {
new TimePickerDialog( activity,themeResId,
// 绑定监听器
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
// event_time.setText("您选择了:" + hourOfDay + "时" + minute + "分");
event_time.setText(hourOfDay+"时"+minute+"分");
}
}
// 设置初始时间
, calendar.get(Calendar.HOUR_OF_DAY)
, calendar.get(Calendar.MINUTE)
// true表示采用24小时制
,true).show();
}
public static void showDatePickerDialog(Activity activity, int themeResId, final TextView event_month,final TextView event_day, Calendar calendar) {
new DatePickerDialog(activity, themeResId, new DatePickerDialog.OnDateSetListener() {
// 绑定监听器(How the parent is notified that the date is set.)
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
// 此处得到选择的时间,可以进行你想要的操作
// tv.setText("您选择了:" + year + "年" + (monthOfYear + 1) + "月" + dayOfMonth + "日");
event_day.setText(String.valueOf(dayOfMonth));
event_month.setText(String.valueOf(monthOfYear+1));
}
}
// 设置初始日期
, calendar.get(Calendar.YEAR)
, calendar.get(Calendar.MONTH)
, calendar.get(Calendar.DAY_OF_MONTH)).show();
}
}

@ -0,0 +1,33 @@
package com.example.leudaemialikeme.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.media.MediaPlayer;
import android.os.Bundle;
import com.example.leudaemialikeme.R;
public class AlarmAlert extends BaseActivity {
private MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int position = getIntent().getIntExtra("position",-1);
mediaPlayer = MediaPlayer.create(this,R.raw.clockmusic2);
mediaPlayer.start();
new AlertDialog.Builder(AlarmAlert.this)
.setIcon(R.drawable.clock)
.setTitle("闹钟响了")
.setCancelable(false)
.setMessage("时间到了!")
.setPositiveButton("关掉"
, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
AlarmAlert.this.finish();
mediaPlayer.stop();
}
}).show();
}
}

@ -0,0 +1,119 @@
package com.example.leudaemialikeme.Activity;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.OkHttpUtil;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
public class AnswerActivity extends AppCompatActivity {
private TextView text_answer_cancel;
private TextView text_answer_commit;
private TextView text_question_name;
private EditText edit_answer_detail;
private int qid;
private String qtitle;
@Override
protected void onCreate(Bundle savedInstanceState) {
Intent intent = getIntent();
qid = intent.getIntExtra("qid", -1);
qtitle = intent.getStringExtra("qtitle");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_answer);
text_answer_cancel = findViewById(R.id.text_answer_cancel);
text_answer_commit = findViewById(R.id.text_answer_commit);
text_question_name = findViewById(R.id.text_question_name);
edit_answer_detail = findViewById(R.id.text_answer_detail);
text_question_name.setText(qtitle);
text_answer_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
text_answer_commit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(edit_answer_detail.getText().toString().equals("")){
Toast.makeText(AnswerActivity.this, "请输入回答内容", Toast.LENGTH_SHORT).show();
}else{
AlertDialog.Builder builder = new AlertDialog.Builder(AnswerActivity.this);
builder.setTitle("是否确认提交回答?");
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(AnswerActivity.this, "已取消回答", Toast.LENGTH_SHORT).show();
}
});
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String content = edit_answer_detail.getText().toString();
Map<String, String> params = new HashMap<>();
params.put("answerContent", content);
sendAnswer(params);
}
});
builder.show();
}
}
});
}
private void sendAnswer(final Map params){
new Thread(new Runnable() {
@Override
public void run() {
try{
String url = LoginActivity.SERVER_URL+"/main-servlet?action=sendAnswer&iduser="+ BaseActivity.owner.getNetId()+"&qid="+qid;
OkHttpUtil.asyPost(url, params,new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final String jsonStr = response.body().string();
runOnUiThread(new Runnable(){
@Override
public void run() {
if(jsonStr.equals("success")){
Toast.makeText(getApplicationContext(), "回答成功", Toast.LENGTH_SHORT).show();
finish();
}else {
Toast.makeText(getApplicationContext(), "回答失败", Toast.LENGTH_SHORT).show();
}
}
});
}
});
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
}

@ -31,9 +31,8 @@ public class BaseActivity extends AppCompatActivity {
public static Owner owner;
//服务器链接
//酸奶牛的ip地址IPv4 地址: 192.168.250.25
//校园网的ip的地址是192.168.186.1
public static String SERVER_IP = "192.168.186.1";
public static String SERVER_IP = "172.30.87.197";
// 172.30.118.24 寝172.18.138.225
// static {
// try {
@ -117,12 +116,14 @@ public class BaseActivity extends AppCompatActivity {
//初始化WS
public void initWebSocket(int ownerNetId){
WS_URL="ws://"+SERVER_IP+":"+SERVER_PORT+"/chatWS/"+ownerNetId;
WS_URL="ws://"+SERVER_IP+":"+SERVER_PORT+"/LeudaemiaLikeMe/chatWS/"+ownerNetId;
// System.out.println(WS_URL);
URI uri=URI.create(WS_URL);
wsClient= new WebSocketClient(uri);
isNeedReconnect=true;
mHandler.postDelayed(heartBeatRunnable, HEART_BEAT_RATE);
try {
Log.d("ws测试","准备连接");
wsClient.connectBlocking();
} catch (InterruptedException e) {
e.printStackTrace();

@ -0,0 +1,332 @@
package com.example.leudaemialikeme.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager.widget.ViewPager;
import com.example.leudaemialikeme.Adapter.CommentAdapter;
import com.example.leudaemialikeme.Model.Blog;
import com.example.leudaemialikeme.Model.Comment;
import com.example.leudaemialikeme.Model.User;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.OkHttpUtil;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.IOException;
import java.lang.reflect.Type;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
public class BlogDetailActivity extends BaseActivity {
TextView bTitleView;
TextView bAuthorNameView;
TextView bContentView;
TextView bViewNumView;
TextView bColNumView;
TextView bComNumView;
EditText comEditView;
TextView comComView;
ImageView detail_to;
ImageView search;
ImageView bColImage;
Blog blog=new Blog();
User author;
List<Comment> commentList=new ArrayList<>();
CommentAdapter commentAdapter=new CommentAdapter();
RecyclerView recyclerView;
LinearLayout detailColView;
private static ViewPager viewPager; //内导航的碎片的容器
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_blogdetail);
Intent intent=getIntent();//新增bid
blog.setBid(Integer.parseInt(intent.getStringExtra("bid")));//新增bid
blog.setBcontent(intent.getStringExtra("bContent"));
blog.setBtittle(intent.getStringExtra("bTitle"));
Log.e("传输后的bid",String.valueOf(blog.getBid()));
blog.setBcollectNum(Integer.parseInt(intent.getStringExtra("bColNum")));
blog.setBbrowse((Integer.parseInt(intent.getStringExtra("bViewNum"))));
blog.setUid(Integer.parseInt(intent.getStringExtra("uid")));
initView();
setData();
initClick();
recyclerView=(RecyclerView)findViewById(R.id.comment_recyclerView);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
commentAdapter=new CommentAdapter();
initComments();
Log.e("commentList",String.valueOf(commentList));
commentAdapter.setMCommentList(commentList);
recyclerView.setAdapter(commentAdapter);
}
private void initComments() {
new Thread(new Runnable() {
@Override
public void run() {
String url=BaseActivity.SERVER_URL+"/comment-servlet?action=getCommentByBid";
Map<String,String> paramMap=new HashMap<String,String>();
paramMap.put("bid",String.valueOf(blog.getBid()));
OkHttpUtil.asyPost(url, paramMap, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String jsonStr=response.body().string();
runOnUiThread(new Runnable() {
@Override
public void run() {
Gson gson=new Gson();
Log.e("comment",jsonStr);
Type listType=new TypeToken<List<Comment>>(){}.getType();
commentList = gson.fromJson(jsonStr,listType);
Log.e("onResponse:commentList",String.valueOf(commentList));
bComNumView.setText("("+String.valueOf(commentList.size())+")");
commentAdapter.setMCommentList(commentList);
recyclerView.setAdapter(commentAdapter);
}
});
}
});
}
}).start();
}
private void setBlogAuthorName(String uid){
new Thread(new Runnable() {
@Override
public void run() {
try{
String url = BaseActivity.SERVER_URL + "/main-servlet?action=getUserById";
Map<String,String> paramMap = new HashMap<String,String>();
paramMap.put("uid", String.valueOf(blog.getUid()));
Log.e("设置帖子的作者uid",uid);
OkHttpUtil.asyPost(url, paramMap, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String jsonStr = response.body().string();
runOnUiThread(new Runnable() {
@Override
public void run() {
Gson gson = new Gson(); // 使用 gson 库解析 JSON 数据
// 创建一个 TypeToken 的匿名子类对象,并调用对象的 getType()方法
// Log.e("Blog's Str",jsonStr);
Type listType = new TypeToken<User>() {}.getType();
author = gson.fromJson(jsonStr, listType);
// bAuthorNameView=findViewById(R.id.author);
bAuthorNameView.setText(author.getUsername());
}
});
}
});
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
private void initView(){
bTitleView=findViewById(R.id.detail_theme);
bAuthorNameView=findViewById(R.id.author);
bContentView=findViewById(R.id.bContent);
bViewNumView=findViewById(R.id.detail_view_num);
bColNumView=findViewById(R.id.detail_col_num);
bComNumView=findViewById(R.id.comment_num);
comEditView=findViewById(R.id.comment_edit);
comComView=findViewById(R.id.comment_commit);
detail_to=findViewById(R.id.detail_to);
search=findViewById(R.id.detail_to_search);
detailColView=findViewById(R.id.detail_like);
detailColView=findViewById(R.id.detail_col);
bColImage=findViewById(R.id.imageView15);
}
private void setData(){
setBlogAuthorName(String.valueOf(blog.getUid()));
// setBColNumViewImage(blog.getBid(),BaseActivity.owner.getNetId()); 需要传入登录用户的id
setBColNumViewImage(blog.getBid(),BaseActivity.owner.getNetId(),2);
bViewNumView.setText(String.valueOf(blog.getBbrowse()));
bTitleView.setText(blog.getBtittle());
bContentView.setText(blog.getBcontent());
bColNumView.setText(String.valueOf(blog.getBcollectNum()));
}
private void setBColNumViewImage(int bid,int uid,int type){
Map<String,Integer> paramMap=new HashMap<String, Integer>();
paramMap.put("bid",bid);
paramMap.put("uid", uid);
paramMap.put("type",type);
String url_collect=BaseActivity.SERVER_URL+"/collect-servlet?action=JudgeCollect";
new Thread(new Runnable() {
@Override
public void run() {
String jsonStr=OkHttpUtil.synPost(url_collect,paramMap);
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.e("ColNumViewImage-jsonStr",jsonStr);
if(!jsonStr.contains("not")){
bColImage.setImageResource(R.drawable.collect_pick);
bColImage.setTag(R.drawable.collect_pick);
}else{
bColImage.setImageResource(R.drawable.collect);
bColImage.setTag(R.drawable.collect);
}
}
});
System.out.println("更新collect表成功");
}
}).start();
}
private void initClick(){
detail_to.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
finish();
}
});
search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(BlogDetailActivity.this,BlogSearchActivity.class);
startActivity(intent);
}
});
comComView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
String cont = comEditView.getText().toString();
User user=new User();
user.setIduser(BaseActivity.owner.getNetId());
user.setUsername(BaseActivity.owner.getUsername());
long timeCurrent = System.currentTimeMillis();
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
Timestamp time = Timestamp.valueOf(sdf.format(timeCurrent));
Comment comment=new Comment(blog.getBid(),user.getUsername(),time,user.getIduser(),
cont,2);
Map<String,Comment> paramMap=new HashMap<String,Comment>();
paramMap.put("comment",comment);
String url=BaseActivity.SERVER_URL+"/comment-servlet?action=insertComment";
new Thread(new Runnable() {
@Override
public void run() {
OkHttpUtil.asyPost(url, paramMap, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String jsonStr = response.body().string();
// Log.e("提交评论",jsonStr);
runOnUiThread(new Runnable() {
@Override
public void run() {
commentList.add(comment);
commentAdapter.setMCommentList(commentList);
recyclerView.setAdapter(commentAdapter);
comEditView.setText("");
bComNumView.setText("("+String.valueOf(commentList.size())+")");
}
});
}
});
}
}).start();
}
});
detailColView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Map<String,Integer> paramMap=new HashMap<String, Integer>();
paramMap.put("bid",blog.getBid());
paramMap.put("uid", BaseActivity.owner.getNetId());
paramMap.put("type",2);
String url_collect=BaseActivity.SERVER_URL+"/collect-servlet?action=InsertCollect";
int imageId=getDrawableId(bColImage);
if(imageId==R.drawable.collect) {
bColImage.setImageResource(R.drawable.collect_pick);
bColImage.setTag(R.drawable.collect_pick);
}else {
bColImage.setImageResource(R.drawable.collect);
bColImage.setTag(R.drawable.collect);
}
new Thread(new Runnable() {
@Override
public void run() {
String jsonStr=OkHttpUtil.synPost(url_collect,paramMap);
runOnUiThread(new Runnable() {
@Override
public void run() {
if(jsonStr.contains("insert")){
bColNumView.setText(String.valueOf(Integer.parseInt(bColNumView.getText().toString())+1));
Toast.makeText(BlogDetailActivity.this,
"已收藏",Toast.LENGTH_SHORT).show();
}else{
bColNumView.setText(String.valueOf(Integer.parseInt(bColNumView.getText().toString())-1));
Toast.makeText(BlogDetailActivity.this,
"取消收藏",Toast.LENGTH_SHORT).show();
}
}
});
System.out.println("更新collect表成功");
}
}).start();
}
});
}
private int getDrawableId(ImageView iv) {
return (Integer) iv.getTag();
}
}

@ -0,0 +1,131 @@
package com.example.leudaemialikeme.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.example.leudaemialikeme.R;
public class BlogSearchActivity extends AppCompatActivity {
ImageView back;
EditText blogSearchEdit;
TextView blogSearchCommit;
TextView recView;
TextView foView;
TextView poView;
TextView meView;
TextView stView;
TextView exView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_blog_search);
initView();
initClick();
}
private void initView(){
back = (ImageView)findViewById(R.id.search_back);
blogSearchEdit = (EditText)findViewById(R.id.blog_search_edit);
blogSearchCommit = (TextView) findViewById(R.id.blog_search_commit);
recView=(TextView)findViewById(R.id.recView);
foView=(TextView)findViewById(R.id.foView);
poView=(TextView)findViewById(R.id.poView);
meView=(TextView)findViewById(R.id.meView);
stView=(TextView)findViewById(R.id.stView);
exView=(TextView)findViewById(R.id.exView);
}
private void initClick(){
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
blogSearchCommit.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
String text = blogSearchEdit.getText().toString();
if(text.length() != 0){
Intent intent=new Intent(BlogSearchActivity.this,BlogSearchResultActivity.class);
Log.e("onClick-text",text);
intent.putExtra("text",text);
startActivity(intent);}
else{
Toast.makeText(BlogSearchActivity.this, "请输入搜索的内容", Toast.LENGTH_SHORT).show();
}
}
});
recView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
skip(recView);
}
});
foView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
skip(foView);
}
});
poView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
skip(poView);
}
});
meView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
skip(meView);
}
});
stView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
skip(stView);
}
});
exView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
skip(exView);
}
});
}
private void skip(TextView view){
String text = view.getText().toString();
Intent intent=new Intent(BlogSearchActivity.this,BlogSearchResultActivity.class);
// Log.e("onClick-text",text);
intent.putExtra("text",text);
startActivity(intent);
}
}

@ -7,11 +7,12 @@ import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Adapter.NewsAdapter;
import com.example.leudaemialikeme.Model.News;
import com.example.leudaemialikeme.Adapter.BlogAdapter;
import com.example.leudaemialikeme.Model.Blog;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.OkHttpUtil;
import com.google.gson.Gson;
@ -28,83 +29,68 @@ import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
public class NewsSearchResultActivity extends BaseActivity {
ImageView newsSearchBackView;
TextView newsSearchTextView;
TextView newsResultBackView;
public class BlogSearchResultActivity extends AppCompatActivity {
ImageView blogSearchBackView;
TextView blogSearchTextView;
TextView blogResultBackView;
RecyclerView resultRecyclerView;
List<News> resultNews=new ArrayList<>();
List<Blog> resultBlog=new ArrayList<>();
private boolean isPause = false;
String text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_news_search_result);
Intent intent = getIntent();
text=intent.getStringExtra("text");//接受资讯搜索传过来的字符串
Log.e("传递过来的text = ",text);
setContentView(R.layout.activity_blog_search_result);
Intent intent=getIntent();
text=intent.getStringExtra("text");
blogSearchTextView=(TextView) findViewById(R.id.blog_search_text);
blogSearchTextView.setText(text);
Log.e("text",text);
resultRecyclerView=(RecyclerView) findViewById(R.id.result_recyclerView);
LinearLayoutManager layoutManager=new LinearLayoutManager(this);
resultRecyclerView.setLayoutManager(layoutManager);
NewsAdapter resultAdapter = new NewsAdapter();
BlogAdapter resultAdapter = new BlogAdapter();
initView();//初始化视图
newsSearchTextView.setText(text);
initData(text);//显示搜索结果
initView();
initData(text);
initClick();
if(resultNews==null)
Log.e("resultNews","resultNews is null");
resultAdapter.setRecnewsList(resultNews);
if(resultRecyclerView==null)
Log.e("resultRecyclerView","resultRecyclerView is null");
if(resultAdapter==null)
Log.e("resultAdapter","resultAdapter is null");
resultAdapter.setRecnewsList(resultBlog);
resultRecyclerView.setAdapter(resultAdapter);
}
//初始化视图
private void initView(){
newsSearchBackView=(ImageView) findViewById(R.id.news_search_back);
newsSearchTextView=(TextView) findViewById(R.id.news_search_text);
newsResultBackView=(TextView)findViewById(R.id.news_result_back);
blogSearchBackView=(ImageView) findViewById(R.id.blog_search_back);
blogResultBackView=(TextView)findViewById(R.id.blog_result_back);
}
//搜索对应的数据
private void initData(String text){
final Map<String,String> paramMap=new HashMap<String, String>();
Map<String,String> paramMap=new HashMap<String, String>();
paramMap.put("text",text);
final String url=BaseActivity.SERVER_URL+"/news-servlet?action=getSearchResult";//对应Servlet
// String url=BaseActivity.SERVER_URL+"/news-servlet?action=getSearchResult";
// Log.e("initData中的text",text);
String url=BaseActivity.SERVER_URL+"/blog-servlet?action=getSearchResult";
new Thread(new Runnable() {
@Override
public void run() {
OkHttpUtil.asyPost(url, paramMap, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
OkHttpUtil.asyPost(url, paramMap, new Callback(){
}
@Override
public void onFailure(Call call, IOException e) {
// @Override
// public void onResponse(Call call, Response response) throws IOException {
//
// }
// });
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Gson gson = new Gson();
String jsonStr = response.body().string();
Log.e("result jsonStr",jsonStr);
Type listType = new TypeToken<List<News>>() {}.getType();
final List<News> resultList = gson.fromJson(jsonStr, listType);
resultNews = resultList ;
Type listType = new TypeToken<List<Blog>>() {}.getType();
List<Blog> resultList = gson.fromJson(jsonStr, listType);
resultBlog = resultList ;
runOnUiThread(new Runnable() {
@Override
public void run() {
NewsAdapter resultAdapter = new NewsAdapter();
BlogAdapter resultAdapter = new BlogAdapter();
resultAdapter.setRecnewsList(resultList);
resultRecyclerView.setAdapter(resultAdapter);
}
@ -116,13 +102,13 @@ public class NewsSearchResultActivity extends BaseActivity {
}
private void initClick() {
newsSearchBackView.setOnClickListener(new View.OnClickListener(){
blogSearchBackView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
finish();
}
});
newsResultBackView.setOnClickListener(new View.OnClickListener() {
blogResultBackView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
@ -142,7 +128,7 @@ public class NewsSearchResultActivity extends BaseActivity {
if (isPause) { //判断是否暂停
isPause = false;
Map<String, String[]> paramMap = new HashMap<String, String[]>();
initData(text);//更新数据
initData(text);
}
}
}
}

@ -1,17 +1,141 @@
package com.example.leudaemialikeme.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.TextView;
import com.example.leudaemialikeme.R;
public class ChatActivity extends BaseActivity {
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Adapter.ChatAdapter;
import com.example.leudaemialikeme.Dao.FriendDao;
import com.example.leudaemialikeme.Dao.MessageDao;
import com.example.leudaemialikeme.Model.Friend;
import com.example.leudaemialikeme.Model.Message;
import com.example.leudaemialikeme.Model.MessageItemView;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.TimeUtil;
import com.google.gson.Gson;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class ChatActivity extends BaseActivity {
private MessageDao messageDao = new MessageDao();
private FriendDao friendDao = new FriendDao();
private ImageButton bt_chat_to_chat_list;
private RecyclerView msg_recycler_view;
private TextView text_chat_name;
private EditText edit_content;
private Button bt_send_msg;
public int friendNetId;
private Friend currentFriend;
private ArrayList<Message> messageList = new ArrayList<Message>();
private MessageItemView msgItemView;
private ChatAdapter chatAdapter;
private Gson gson = new Gson();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chat);
bt_chat_to_chat_list = findViewById(R.id.bt_chat_to_chat_list);
msg_recycler_view = findViewById(R.id.msg_recycler_view);
text_chat_name = findViewById(R.id.text_chat_name);
edit_content = findViewById(R.id.edit_content);
bt_send_msg = findViewById(R.id.bt_send_msg);
initData();
text_chat_name.setText(currentFriend.getUsername());
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
msg_recycler_view.setLayoutManager(layoutManager);
chatAdapter = new ChatAdapter(msgItemView);
msg_recycler_view.setAdapter(chatAdapter);
msg_recycler_view.scrollToPosition(messageList.size() - 1);
edit_content.setImeOptions(EditorInfo.IME_ACTION_SEND);
edit_content.setInputType(EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE);
edit_content.setMaxLines(2);
edit_content.setSingleLine(false);
edit_content.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEND
|| actionId == EditorInfo.IME_ACTION_DONE
|| (event != null && KeyEvent.KEYCODE_ENTER == event.getKeyCode() && KeyEvent.ACTION_DOWN == event.getAction())) {
String content=edit_content.getText().toString();
if (!content.equals("")){
Message message =new Message(owner.getNetId(),currentFriend.getNetId(),content);
Map<String, String> jsonMap = new HashMap<String, String>();
jsonMap.put("senderNetId", String.valueOf(owner.getNetId()));
jsonMap.put("receiverNetId", String.valueOf(currentFriend.getNetId()));
jsonMap.put("messageType","1");
jsonMap.put("content", content);
jsonMap.put("createTime", TimeUtil.timeToString(new Timestamp(message.getCreateTime())));
addMsg(message,1);
edit_content.setText("");
wsClient.send(gson.toJson(jsonMap));
}
}
return false;
}
});
bt_send_msg.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
String content=edit_content.getText().toString();
if (!content.equals("")){
Message message =new Message(owner.getNetId(),currentFriend.getNetId(),content);
Map<String, String> jsonMap = new HashMap<String, String>();
jsonMap.put("senderNetId", String.valueOf(owner.getNetId()));
jsonMap.put("receiverNetId", String.valueOf(currentFriend.getNetId()));
jsonMap.put("messageType","1");
jsonMap.put("content", content);
jsonMap.put("createTime", TimeUtil.timeToString(new Timestamp(message.getCreateTime())));
addMsg(message,1);
edit_content.setText("");
wsClient.send(gson.toJson(jsonMap));
}
}
});
bt_chat_to_chat_list.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
private void initData() {
//从intent中取出currentNetId并查出对象
Intent intent = getIntent();
friendNetId = intent.getIntExtra("friendNetId", -1);
Log.d("ChatActivity","当前聊天对象ID"+friendNetId);
currentFriend = friendDao.findByNetId(friendNetId, owner.getNetId());
Log.d("ChatActivity","当前聊天对象:"+currentFriend);
//从数据库中查找聊天记录-默认最近20条记录
messageList = messageDao.findNearlyMessage(friendNetId, owner.getNetId());
//组装成MessageItemViw
msgItemView = new MessageItemView(currentFriend, owner, messageList);
}
//消息添加方法
public void addMsg(Message message, int isRead) {
Log.d("刷新","添加一条新消息");
msgItemView.messages.add(message);
chatAdapter.notifyItemInserted(messageList.size() - 1);
msg_recycler_view.scrollToPosition(messageList.size() - 1);
message.setFlag(isRead);
message.save();
}
}

@ -1,39 +1,103 @@
package com.example.leudaemialikeme.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Adapter.HistoryQuestionAdapter;
import com.example.leudaemialikeme.Adapter.QuestionAdapter;
import com.example.leudaemialikeme.Model.Question;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.OkHttpUtil;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
public class ConcernedProblemActivity extends BaseActivity {
private List<Question> mData = new ArrayList<>();
private RecyclerView recyclerView;
private boolean isPause;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_concerned_problem);
getData();//获得数据
RecyclerView recycleView = (RecyclerView) findViewById(R.id.questionList);//获得视图
recyclerView = (RecyclerView) findViewById(R.id.questionList);//获得视图
ImageView back_concerned = findViewById(R.id.back_concerned);
LinearLayoutManager layoutManager;
layoutManager = new LinearLayoutManager(this);
recycleView.setLayoutManager(layoutManager);//建立线性布局
QuestionAdapter adapter = new QuestionAdapter(mData);//创建适配器
recycleView.setAdapter(adapter);//将视图与适配器连接起来
recyclerView.setLayoutManager(layoutManager);//建立线性布局
QuestionAdapter adapter = new QuestionAdapter(mData, ConcernedProblemActivity.this);//创建适配器
recyclerView.setAdapter(adapter);//将视图与适配器连接起来
getData();//获得数据
back_concerned.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
private void getData() {
Question q1 = new Question("白血病的早期症状和前兆有什么","24浏览","10:24");
mData.add(q1);
Question q2 = new Question("白血病是什么原因引起的","112浏览","15:11");
mData.add(q2);
new Thread(new Runnable() {
@Override
public void run() {
try{
String url = ConcernedProblemActivity.SERVER_URL+"/my-servlet?action=concernedQuestion&uid="+ BaseActivity.owner.getNetId()+"&type="+3;
Callback callback = new Callback() {
@Override
public void onFailure(Call call, IOException e) {
System.out.println("-----ERROR----");
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String jsonStr = response.body().string();
Gson gson = new Gson();
Map<String, String> jsonMap= gson.fromJson(jsonStr, new TypeToken<Map<String, String>>() {}.getType());
final String message=(String) jsonMap.get("message");
if (message.equals("success")) {
List<Question> questionList = gson.fromJson(jsonMap.get("questionList"), new TypeToken <List<Question>>(){}.getType());
mData = questionList;
QuestionAdapter adapter = new QuestionAdapter(mData, ConcernedProblemActivity.this);//创建适配器
recyclerView.setAdapter(adapter);
}
}
};
OkHttpUtil.asyGet(url,callback);
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
@Override
public void onPause() {
super.onPause();
isPause = true; //记录页面已经被暂停
}
@Override
public void onResume() {
super.onResume();
if (isPause){ //判断是否暂停
isPause = false;
getData();
HistoryQuestionAdapter adapter = new HistoryQuestionAdapter(mData, ConcernedProblemActivity.this);//创建适配器
recyclerView.setAdapter(adapter);
}
}
}

@ -1,6 +1,9 @@
package com.example.leudaemialikeme.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@ -9,29 +12,88 @@ import com.example.leudaemialikeme.Adapter.EventAdapter;
import com.example.leudaemialikeme.Model.Event;
import com.example.leudaemialikeme.R;
import org.litepal.LitePal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class EventActivity extends BaseActivity {
private List<Event> mData = new ArrayList<>();
// private List<Event> mData = new ArrayList<>();
private List<Map<String,String>> contentList = new ArrayList<Map<String,String>>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_event);
getData();//获得数据
ImageView addContent = (ImageView) findViewById(R.id.add_event);
addContent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(EventActivity.this,AddEventActivity.class);
startActivity(intent);
}
});
ImageView back_my = findViewById(R.id.back_my);
back_my.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Intent intent = new Intent(EventActivity.this,MainActivity.class);
// startActivity(intent);
finish();
}
});
// getData();//获得数据
// RecyclerView recycleView = (RecyclerView) findViewById(R.id.eventList);//获得视图
// LinearLayoutManager layoutManager;
// layoutManager = new LinearLayoutManager(this);
// recycleView.setLayoutManager(layoutManager);//建立线性布局
// EventAdapter adapter = new EventAdapter(mData);//创建适配器
// recycleView.setAdapter(adapter);//将视图与适配器连接起来
}
@Override
protected void onStart(){
super.onStart();
contentList.clear();
initContent();
RecyclerView recycleView = (RecyclerView) findViewById(R.id.eventList);//获得视图
LinearLayoutManager layoutManager;
layoutManager = new LinearLayoutManager(this);
recycleView.setLayoutManager(layoutManager);//建立线性布局
EventAdapter adapter = new EventAdapter(mData);//创建适配器
EventAdapter adapter = new EventAdapter(contentList);//创建适配器
recycleView.setAdapter(adapter);//将视图与适配器连接起来
adapter.notifyDataSetChanged();
}
private void getData() {
Event event1 = new Event("04","10月","第三次化疗","08:00");
mData.add(event1);
Event event2 = new Event("11","5月","检查","09:00");
mData.add(event2);
private void initContent() {
List<Event> events = LitePal.order("id desc").find(Event.class);
for(Event event:events){
String event_day = event.getEvent_day();
String event_month = event.getEvent_month();
String event_info = event.getEvent_info();
String event_place = event.getEvent_place();
String event_doctor_name = event.getEvent_doctor_name();
String event_time = event.getEvent_time();
String event_create_time = event.getEvent_create_time();
Map<String,String> map = new HashMap<String,String>();
map.put("event_day",event_day);
map.put("event_month",event_month);
map.put("event_info",event_info);
map.put("event_place",event_place);
map.put("event_doctor_name",event_doctor_name);
map.put("event_time",event_time);
map.put("event_create_time",event_create_time);
contentList.add(map);
}
}
// private void getData() {
// Event event1 = new Event("04","10月","第三次化疗","08:00");
// mData.add(event1);
// Event event2 = new Event("11","5月","检查","09:00");
// mData.add(event2);
// }
}

@ -6,6 +6,7 @@ import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import com.example.leudaemialikeme.Fragment.CollectFragment;
import com.example.leudaemialikeme.Fragment.HistoryFragment;
import com.example.leudaemialikeme.R;
public class HistoryActivity extends BaseActivity {
@ -17,7 +18,7 @@ public class HistoryActivity extends BaseActivity {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction trans = fm.beginTransaction();
String title = "浏览历史";
trans.replace(R.id.collect_frag_layout, new CollectFragment(title));
trans.replace(R.id.history_frag_layout, new HistoryFragment(title));
trans.commit();
}
}

@ -9,7 +9,10 @@ import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.Toast;
import com.example.leudaemialikeme.Fragment.InfoFragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Adapter.InfoAdapter;
import com.example.leudaemialikeme.Model.Recnews;
import com.example.leudaemialikeme.R;
@ -17,6 +20,7 @@ import java.util.ArrayList;
import java.util.List;
public class InfoActivity extends BaseActivity {
private List<Recnews> recNews=new ArrayList<>();
@Override
@ -27,30 +31,26 @@ public class InfoActivity extends BaseActivity {
Intent intent=getIntent();
int infoType=intent.getIntExtra("info_type",4);
List<String> typeList = new ArrayList<String>();
typeList.add("公司");
typeList.add("红十字");
typeList.add("政府");
typeList.add("慈善");
typeList.add("全部");
//设置适配器
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, typeList);//
//设置样式
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, typeList);
adapter.setDropDownViewResource(android.R.layout.simple_list_item_single_choice);
//加载适配器
Spinner sp = (Spinner) findViewById(R.id.info_type);
sp.setAdapter(adapter);
sp.setSelection(infoType,true);
sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { //监听Spinner的操作
sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
// parent 为控件Spinner view显示文字的TextView position下拉选项的位置从0开始
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { //选取的操作
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//获取Spinner控件的适配器
ArrayAdapter<String> adapter = (ArrayAdapter<String>) parent.getAdapter();
//tvResult.setText(adapter.getItem(position));
Toast.makeText(getBaseContext(),adapter.getItem(position),Toast.LENGTH_SHORT).show();
// str1=spinner.getSelectedItem().toString();
// Log.e("tag:","你选中的消息是:"+str1);
}
//没有选中时的处理
public void onNothingSelected(AdapterView<?> parent) {
@ -67,17 +67,14 @@ public class InfoActivity extends BaseActivity {
}
});
// initRecNews();
// RecyclerView recyclerView=(RecyclerView) findViewById(R.id.info_recyclerView);//显示recycleview
// LinearLayoutManager layoutManager=new LinearLayoutManager(this);
// recyclerView.setLayoutManager(layoutManager);
// InfoAdapter infoAdapter=new InfoAdapter(recNews);
// recyclerView.setAdapter(infoAdapter);
getSupportFragmentManager() //这里添加一个展示资讯的碎片
.beginTransaction()
.add(R.id.infoFragment,new InfoFragment()) // 此处的R.id.fragment_container是要盛放fragment的父容器
.commit();
initRecNews();
RecyclerView recyclerView=(RecyclerView) findViewById(R.id.info_recyclerView);
LinearLayoutManager layoutManager=new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
InfoAdapter infoAdapter=new InfoAdapter(recNews);
recyclerView.setAdapter(infoAdapter);
}

@ -1,20 +1,28 @@
package com.example.leudaemialikeme.Activity;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.example.leudaemialikeme.Dao.FriendDao;
import com.example.leudaemialikeme.Dao.MessageDao;
import com.example.leudaemialikeme.Dao.OwnerDao;
import com.example.leudaemialikeme.Model.Friend;
import com.example.leudaemialikeme.Model.Message;
import com.example.leudaemialikeme.Model.Owner;
import com.example.leudaemialikeme.Model.User;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.OkHttpUtil;
import com.example.leudaemialikeme.Utils.TimeUtil;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import org.litepal.LitePal;
import java.util.HashMap;
import java.util.List;
@ -31,6 +39,9 @@ public class LoginActivity extends BaseActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
//获取数据库
SQLiteDatabase db = LitePal.getDatabase();
edit_username = findViewById(R.id.edit_username);
edit_pwd = findViewById(R.id.edit_pwd);
bt_login = findViewById(R.id.bt_login);
@ -45,7 +56,6 @@ public class LoginActivity extends BaseActivity {
paramMap.put("username",username);
paramMap.put("password",pwd);
loginRequest(paramMap);
}else {
Toast.makeText(LoginActivity.this, "用户名或密码格式错误!", Toast.LENGTH_SHORT).show();
}
@ -78,7 +88,9 @@ public class LoginActivity extends BaseActivity {
owner = dbOwner;
// ownerInfoSaveToPref(); //记住密码方法
// 初始化WS链接
// System.out.println(owner);
initWebSocket(owner.getNetId());
Log.d("记录","开始获取未读信息");
getUnReadMsg();
}else{
//如果本地为空则说明是首次登录,则需要发送请求获取用户的个人信息及朋友列表数据存入本地数据库中,再进行存储
@ -97,6 +109,7 @@ public class LoginActivity extends BaseActivity {
@Override
public void run() {
try {
Log.d("用户名",username);
String url = LoginActivity.SERVER_URL + "/main-servlet?action=firstLogin&username="+username;
String jsonStr= OkHttpUtil.synGet(url);
firstLoginResponse(jsonStr);
@ -113,14 +126,14 @@ public class LoginActivity extends BaseActivity {
@Override
public void run() {
Gson gson = new Gson();
Map jsonMap= gson.fromJson(jsonStr, Map.class);
Map<String, String> jsonMap= gson.fromJson(jsonStr, new TypeToken <Map<String, String>>() {}.getType());
final String message=(String) jsonMap.get("message");
if (message.equals("success")){
//进行本地数据存储,本地数据库不存储密码防止泄露需要补全imageURL路径
// JSONObject data=(JSONObject) jsonMap.get("data");
// JSONObject netUser=(JSONObject) data.get("owner");
// JSONArray netFriends=(JSONArray) data.get("friends");
User user = (User)jsonMap.get("user");
User user = gson.fromJson(jsonMap.get("user"), User.class);
//
Owner newOwner = new Owner();
newOwner.setUsername(user.getUsername());
@ -128,6 +141,7 @@ public class LoginActivity extends BaseActivity {
newOwner.setNetId(user.getIduser());
// newOwner.setName(netUser.getString("name"));
// newOwner.setImageURL(SERVER_URL+netUser.getString("imagePath"));
ownerDao.insert(newOwner); //插入本地数据库
//
// if (netFriends!=null && netFriends.size()>0){
@ -161,6 +175,7 @@ public class LoginActivity extends BaseActivity {
try {
String url = LoginActivity.SERVER_URL + "/main-servlet?action=getUnReadMsg&username="+username;
String jsonStr= OkHttpUtil.synGet(url);
Log.d("记录","未读信息获取响应");
getUnReadMsgResponse(jsonStr);
}catch (Exception e){
e.printStackTrace();
@ -175,26 +190,62 @@ public class LoginActivity extends BaseActivity {
@Override
public void run() {
Gson gson = new Gson();
Map jsonMap= gson.fromJson(jsonStr, Map.class);
Map<String, String> jsonMap= gson.fromJson(jsonStr, new TypeToken <Map<String, String>>() {}.getType());
final String message=(String) jsonMap.get("message");
if (message.equals("success")){
//进行本地消息存储
List msgList = (List)jsonMap.get("msgList");
List<Map<String, String>> msgList = gson.fromJson(jsonMap.get("messageList"), new TypeToken <List<Map<String,String>>>(){}.getType());
for (int i=0;i<msgList.size();i++){
Message unReadMsg = (Message) msgList.get(i);
String content=unReadMsg.getContent();
int messageType=unReadMsg.getMessageType();
int receiverId= unReadMsg.getReceiverNetId();
int senderId= unReadMsg.getSenderNetId();
Long createTime = unReadMsg.getCreateTime();
Map<String, String> unReadMsg = msgList.get(i);
// System.out.println(unReadMsg.getSenderNetId());
String content = unReadMsg.get("content");
int messageType = Integer.parseInt(unReadMsg.get("messageType"));
int receiverId = Integer.parseInt(unReadMsg.get("receiverNetId"));
int senderId = Integer.parseInt(unReadMsg.get("senderNetId"));
Long createTime = TimeUtil.stringToTime(unReadMsg.get("createTime")).getTime();
Message newMessage=new Message(senderId,receiverId,messageType,content,createTime);
messageDao.insert(newMessage);
getNewFriendRequest(senderId);
Log.d("记录","sender:"+senderId+" receiver:"+receiverId);
}
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
}
});
}
private void getNewFriendRequest(final int senderId) {
new Thread(new Runnable() {
@Override
public void run() {
try {
String url = LoginActivity.SERVER_URL + "/main-servlet?action=getNewFriend&senderId="+senderId;
String jsonStr= OkHttpUtil.synGet(url);
getNewFriendResponse(jsonStr, senderId);
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
private void getNewFriendResponse(final String jsonStr, final int senderId) {
runOnUiThread(new Runnable() {
private MessageDao messageDao=new MessageDao();
@Override
public void run() {
Gson gson = new Gson();
Map<String, String> jsonMap= gson.fromJson(jsonStr, new TypeToken <Map<String, String>>() {}.getType());
final String message = jsonMap.get("message");
if (message.equals("success")){
//进行本地消息存储
String username = jsonMap.get("username");
FriendDao friendDao = new FriendDao();
if(friendDao.findByNetId(senderId, owner.getNetId())==null){
Friend friend = new Friend(senderId, username, owner.getNetId());
friendDao.insert(friend);
}
}
// getNewFriends(owner.getUsername());
}
});
}

@ -14,6 +14,7 @@ import com.example.leudaemialikeme.Fragment.CommunityFragment;
import com.example.leudaemialikeme.Fragment.IndexFragment;
import com.example.leudaemialikeme.Fragment.MessageFragment;
import com.example.leudaemialikeme.Fragment.MyFragment;
import com.example.leudaemialikeme.Model.Blog;
import com.example.leudaemialikeme.R;
import java.util.ArrayList;
@ -38,6 +39,10 @@ public class MainActivity extends BaseActivity {
private TextView textMessage;
private TextView textMy;
private String[] channelList = {"全部","经验"
,"康复","扫雷","问答"}; //默认的内导航栏目
static List<List<Blog>> resourceList=new ArrayList<>();
//底部导航点击事件监听器
@ -67,14 +72,13 @@ public class MainActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().hide();
// getSupportActionBar().hide();
setContentView(R.layout.activity_main);
initFragments(); //初始化数据
initViews(); //初始化控件
initEvents(); //初始化事件
initFirstRun(0);//第一次运行初始化界面,第一个碎片
//从InfoActivity活动跳转回来到IndexFragment
int flag = getIntent().getIntExtra("flag", 0);
if (flag == 1) {
getSupportFragmentManager()
@ -83,21 +87,6 @@ public class MainActivity extends BaseActivity {
.addToBackStack(null)
.commit();
}
// new Thread(new Runnable() {
// @Override
// public void run() {
// QuestionDao userDao=new QuestionDao();
// try {
// userDao.qInsert();
// userDao.qSelect();
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
// }).start();
}
private void initFirstRun(int i) {
@ -179,4 +168,8 @@ public class MainActivity extends BaseActivity {
fragmentList.add(new MessageFragment());
fragmentList.add(new MyFragment());
}
public Fragment getFragment(int i){
return fragmentList.get(i);
}
}

@ -1,21 +1,32 @@
package com.example.leudaemialikeme.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Switch;
import com.example.leudaemialikeme.Adapter.AdapterClock;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Adapter.TimeAdapter;
import com.example.leudaemialikeme.Model.Clock;
import com.example.leudaemialikeme.R;
import org.litepal.LitePal;
import org.litepal.crud.LitePalSupport;
import java.util.ArrayList;
import java.util.List;
public class MdctRmdActivity extends BaseActivity {
private ListView lv;
private AdapterClock adapter;
private RecyclerView lv;
public static TimeAdapter timeAdapter;
private ImageView add_md;
public static List<Clock> list = new ArrayList<>();
Context context = MdctRmdActivity.this;
@Override
@ -34,24 +45,53 @@ public class MdctRmdActivity extends BaseActivity {
}
});
lv=(ListView)findViewById(R.id.lv_list_data);
adapter=new AdapterClock(MdctRmdActivity.this);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
add_md = findViewById(R.id.add_md);
add_md.setOnClickListener(new View.OnClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Switch aSwitch=adapter.getaSwitch(i);
if(aSwitch.isChecked()){
aSwitch.setChecked(false);
//进行业务处理
}else {
aSwitch.setChecked(true);
//进行业务处理
}
public void onClick(View view) {
Intent intent1 = new Intent(MdctRmdActivity.this, AddClock.class);
startActivity(intent1);
}
});
lv=(RecyclerView)findViewById(R.id.rv_list_data);
LitePal.getDatabase();
initRecycleView();
// adapter=new TimeAdapter(MdctRmdActivity.this);
//
//
// lv.setAdapter(adapter);
// lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
// @Override
// public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
// Switch aSwitch=adapter.getaSwitch(i);
// if(aSwitch.isChecked()){
// aSwitch.setChecked(false);
// //进行业务处理
// }else {
// aSwitch.setChecked(true);
// //进行业务处理
// }
// }
// });
}
@Override
protected void onRestart(){
super.onRestart();
initRecycleView();
}
private void initRecycleView() {
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
lv.setLayoutManager(layoutManager);
timeAdapter = new TimeAdapter(list, context);
lv.setAdapter(timeAdapter);
list.clear();
List<Clock> list1 = LitePal.findAll(Clock.class);
for (Clock clock : list1) {
list.add(clock);
}
timeAdapter.notifyDataSetChanged();
}
}

@ -0,0 +1,29 @@
package com.example.leudaemialikeme.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
import com.example.leudaemialikeme.Model.User;
import com.example.leudaemialikeme.R;
public class MyInfoActivity extends AppCompatActivity {
private User user;
private EditText edit_id;
private EditText edit_username;
private EditText edit_password;
private EditText edit_confirm_password;
private EditText phone;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_info);
Intent intent = getIntent();
user = (User)intent.getSerializableExtra("user");
}
}

@ -1,37 +1,103 @@
package com.example.leudaemialikeme.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Adapter.MyQuestionAdapter;
import com.example.leudaemialikeme.Model.MyQuestion;
import com.example.leudaemialikeme.Model.Question;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.OkHttpUtil;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
public class MyQuestionActivity extends BaseActivity {
private List<MyQuestion> mData = new ArrayList<>();
private List<Question> questionList = new ArrayList<>();
RecyclerView recycleView;
private boolean isPause = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_question);
getData();//获得数据
RecyclerView recycleView = (RecyclerView) findViewById(R.id.myQuestionList);//获得视图
recycleView = findViewById(R.id.my_question_list);//获得视图
LinearLayoutManager layoutManager;
layoutManager = new LinearLayoutManager(this);
recycleView.setLayoutManager(layoutManager);//建立线性布局
MyQuestionAdapter adapter = new MyQuestionAdapter(mData);//创建适配器
MyQuestionAdapter adapter = new MyQuestionAdapter(questionList, MyQuestionActivity.this);//创建适配器
recycleView.setAdapter(adapter);//将视图与适配器连接起来
getMyQustionList();
ImageView my_question_back = findViewById(R.id.my_question_back);
my_question_back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
private void getMyQustionList() {
new Thread(new Runnable() {
@Override
public void run() {
try{
String url = LoginActivity.SERVER_URL+"/my-servlet?action=getMyQuestionList&iduser="+ BaseActivity.owner.getNetId();
OkHttpUtil.asyGet(url, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String jsonStr = response.body().string();
Gson gson = new Gson();
questionList = gson.fromJson(jsonStr, new TypeToken<List<Question>>() {}.getType());
runOnUiThread(new Runnable(){
@Override
public void run() {
MyQuestionAdapter adapter = new MyQuestionAdapter(questionList, MyQuestionActivity.this);//创建适配器
recycleView.setAdapter(adapter);//将视图与适配器连接起来
}
});
}
});
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
private void getData() {
MyQuestion q1 = new MyQuestion("成人白血病的早期症状有什么?","2浏览","22:24");
mData.add(q1);
MyQuestion q2 = new MyQuestion("幼儿易得白血病吗?","56浏览","09:11");
mData.add(q2);
@Override
protected void onPause() {
super.onPause();
isPause = true; //记录页面已经被暂停
}
@Override
protected void onResume() {
super.onResume();
if (isPause){ //判断是否暂停
isPause = false;
getMyQustionList();
MyQuestionAdapter adapter = new MyQuestionAdapter(questionList, MyQuestionActivity.this);//创建适配器
recycleView.setAdapter(adapter);//将视图与适配器连接起来
Log.d("添加一条浏览记录","刷新完成");
}
}
}

@ -1,102 +0,0 @@
package com.example.leudaemialikeme.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.leudaemialikeme.Model.News;
import com.example.leudaemialikeme.R;
public class NewsDetailActivity extends BaseActivity {
TextView sTitleView;
TextView sAuthorNameView;
TextView sContentView;
TextView sLikeNumView;
TextView sColNumView;
private int nid;
private String nTitle;
private String nContent;
private String nBrowse;
// TextView bComNumView;
// EditText comEditView;
// TextView comComView;//评论的部分
ImageView detail_to;
ImageView search;
News news;
// User author;//资讯不需要显示作者
// List<Comment> commentList;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_news_detail);//显示详情页的布局
Intent intent = getIntent();
nid = intent.getIntExtra("nid",-1);
nTitle = intent.getStringExtra("nTitle");//获取帖子标题
nContent = intent.getStringExtra("nContent");//获取内容
nBrowse = intent.getStringExtra("nBrowseNum") ;//获取浏览量
initView();//初始布局
initClick();//初始化点击
// EventBus.getDefault().register(this);//进行EvenBus的注册
// Log.e("news:EventBus", news.getStittle());
// if (news != null) {
// Log.i("NewsDetailActivity", "news not null");
// } else
// Log.i("NewsDetailActivity", "news is null");
setNewsDetail();//设置资讯子项的对应内容
Log.e("传输后资讯编号nid是",String.valueOf(nid));
Log.e("传输后资讯标题是",nTitle);
Log.e("传输后资讯内容是",nContent);
Log.e("传输后在详情页的资讯的浏览量是",nBrowse);
}
// @Override
// protected void onDestroy() {
// super.onDestroy();
// EventBus.getDefault().unregister(this);
// }
// @Subscribe(sticky = true)//标记和发送消息的标记一样
// public void onEvent(News news) {//接受消息
// this.news = news;
// Log.e("接受的消息是",news.getScontent());
// }
private void initView() {//初始化视图
sTitleView = findViewById(R.id.detail_theme);
sAuthorNameView = findViewById(R.id.author);
sContentView = findViewById(R.id.sContent);
sLikeNumView = findViewById(R.id.detail_like_num);//资讯点赞数
sColNumView = findViewById(R.id.detail_col_num);//资讯收藏数
detail_to = findViewById(R.id.detail_to);
search = findViewById(R.id.detail_to_search);
}
private void setNewsDetail() {//显示单个子项的资讯
sTitleView.setText(nTitle);
sContentView.setText(nContent);
sLikeNumView.setText(nBrowse);//设置资讯的浏览量
// updateNewsBrowse();//更新资讯浏览量
// sLikeNumView.setText(String.valueOf(news.getSbrowseNum()));//其实是点赞量,但是显示资讯浏览量
// sColNumView.setText(String.valueOf(news.getBcollectNum()));
}
private void initClick() {
detail_to.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
//搜索的点击事件去掉了
}

@ -1,54 +0,0 @@
package com.example.leudaemialikeme.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.leudaemialikeme.R;
public class NewsSearchActivity extends BaseActivity {
ImageView back;
EditText newsSearchEdit;
TextView newsSearchCommit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_news_search);
initView();
initClick();
}
private void initView(){
back = findViewById(R.id.search_back);
newsSearchEdit = findViewById(R.id.news_search_edit);
newsSearchCommit = findViewById(R.id.news_search_commit);
}
private void initClick(){
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
newsSearchCommit.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
String text = newsSearchEdit.getText().toString();
Intent intent=new Intent(NewsSearchActivity.this,NewsSearchResultActivity.class);
Log.e("传递到result页的text = ",text);
intent.putExtra("text",text);//把搜索的值传递到显示搜索结果的活动中
startActivity(intent);
}
});
}
}

@ -0,0 +1,255 @@
package com.example.leudaemialikeme.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Adapter.QuestionDetailAdapter;
import com.example.leudaemialikeme.Model.AnswerItemView;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.OkHttpUtil;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
public class QuestionDetailActivity extends AppCompatActivity {
private ImageView question_back;
private ImageView detail_to_search;
private TextView text_question_title;
private TextView text_author;
private TextView text_question_content;
private ImageView img_invite_to_answer;
private ImageView img_go_write_answer;
private ImageView img_follow_question;
private TextView text_follow_question;
private TextView text_answer_num;
private RecyclerView recyclerView_answer;
private List<AnswerItemView> answerList = new ArrayList<>();
private int qid;
private boolean isPause = false;
private int hasFollow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_question_detail);
Intent intent = getIntent();
qid = intent.getIntExtra("qid", -1);
question_back = findViewById(R.id.question_back);
detail_to_search = findViewById(R.id.detail_to_search);
text_question_title = findViewById(R.id.text_question_title);
text_question_content = findViewById(R.id.text_question_content);
text_author = findViewById(R.id.text_author);
img_invite_to_answer = findViewById(R.id.img_invite_to_answer);
img_go_write_answer = findViewById(R.id.img_go_write_answer);
img_follow_question = findViewById(R.id.img_follow_question);
text_follow_question = findViewById(R.id.text_follow_question);
text_answer_num = findViewById(R.id.text_answer_num);
recyclerView_answer = findViewById(R.id.recyclerView_answer);
LinearLayoutManager layoutManager;
layoutManager = new LinearLayoutManager(this);
recyclerView_answer.setLayoutManager(layoutManager);//建立线性布局
QuestionDetailAdapter adapter = new QuestionDetailAdapter(answerList);//创建适配器
recyclerView_answer.setAdapter(adapter);//将视图与适配器连接起来
getQuestionDetail();
//各种组件的动作设置
//返回键
question_back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
//搜索键
detail_to_search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//TODO 跳转到搜索页面
}
});
//邀请回答
img_invite_to_answer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//TODO 邀请回答功能待完善,目前不实现
}
});
//写回答
img_go_write_answer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(QuestionDetailActivity.this, AnswerActivity.class);
intent.putExtra("qid",qid);
intent.putExtra("qtitle",text_question_title.getText().toString());
startActivity(intent);
}
});
//关注问题
img_follow_question.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(hasFollow==0){
followQuestion();
}else{
cancelFollowQuestion();
}
}
});
}
private void cancelFollowQuestion() {
new Thread(new Runnable() {
@Override
public void run() {
try{
String url = LoginActivity.SERVER_URL+"/main-servlet?action=cancelFollowQuestion&qid="+qid+"&iduser="+BaseActivity.owner.getNetId();
OkHttpUtil.asyGet(url, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final String jsonStr = response.body().string();
runOnUiThread(new Runnable(){
@Override
public void run() {
if(jsonStr.equals("success")){
img_follow_question.setImageResource(R.mipmap.follow_question);
text_follow_question.setText("关注问题");
hasFollow=0;
}else{
Toast.makeText(getApplicationContext(), jsonStr,Toast.LENGTH_SHORT).show();
}
}
});
}
});
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
private void followQuestion() {
new Thread(new Runnable() {
@Override
public void run() {
try{
String url = LoginActivity.SERVER_URL+"/main-servlet?action=followQuestion&qid="+qid+"&iduser="+BaseActivity.owner.getNetId();
OkHttpUtil.asyGet(url, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final String jsonStr = response.body().string();
runOnUiThread(new Runnable(){
@Override
public void run() {
if(jsonStr.equals("success")){
img_follow_question.setImageResource(R.mipmap.has_follow);
text_follow_question.setText("已关注");
hasFollow=1;
}else{
Toast.makeText(getApplicationContext(), jsonStr,Toast.LENGTH_SHORT).show();
}
}
});
}
});
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
private void getQuestionDetail() {
new Thread(new Runnable() {
@Override
public void run() {
try{
String url = LoginActivity.SERVER_URL+"/main-servlet?action=getQuestionDetail&qid="+qid+"&iduser="+BaseActivity.owner.getNetId();
OkHttpUtil.asyGet(url, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String jsonStr = response.body().string();
Gson gson = new Gson();
final Map<String, String> jsonMap = gson.fromJson(jsonStr, new TypeToken<Map<String, String>>() {}.getType());
answerList = gson.fromJson(jsonMap.get("answerList"), new TypeToken<List<AnswerItemView>>() {}.getType());
runOnUiThread(new Runnable(){
@Override
public void run() {
text_question_title.setText(jsonMap.get("qtitle"));
text_question_content.setText(jsonMap.get("qcontent"));
text_author.setText(jsonMap.get("username"));
String num = ""+ answerList.size() +")";
text_answer_num.setText(num);
QuestionDetailAdapter adapter = new QuestionDetailAdapter(answerList);//创建适配器
recyclerView_answer.setAdapter(adapter);//将视图与适配器连接起来
hasFollow = Integer.parseInt(jsonMap.get("hasFollow"));
if(hasFollow==1){
img_follow_question.setImageResource(R.mipmap.has_follow);
text_follow_question.setText("已关注");
}
}
});
}
});
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
@Override
protected void onPause() {
super.onPause();
isPause = true; //记录页面已经被暂停
}
@Override
protected void onResume() {
super.onResume();
if (isPause){ //判断是否暂停
isPause = false;
getQuestionDetail();
QuestionDetailAdapter adapter = new QuestionDetailAdapter(answerList);//创建适配器
recyclerView_answer.setAdapter(adapter);//将视图与适配器连接起来
}
}
}

@ -0,0 +1,16 @@
package com.example.leudaemialikeme.Activity;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import com.example.leudaemialikeme.R;
public class RegisterActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
}
}

@ -1,74 +1,24 @@
package com.example.leudaemialikeme.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import com.example.leudaemialikeme.R;
public class SearchActivity extends BaseActivity {
private EditText nEditText;
private ImageView back;
Context context;
Cursor cursor;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
context = this ;
initView();
// ImageView back;
// back =findViewById(R.id.search_to_index);
//
// back.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) { //回到首页的跳转
// Intent i = new Intent(SearchActivity.this, MainActivity.class);
// i.putExtra("flag",1);
// startActivity(i);
// }
// });
}
ImageView back;
back =findViewById(R.id.search_to_index);
private void initView(){
back=(ImageView)findViewById(R.id.search_to_index);
nEditText = (EditText)findViewById(R.id.EditText);//搜索栏
//设置回首页跳转的点击事件
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { //回到首页的跳转
Intent i = new Intent(SearchActivity.this, MainActivity.class);
i.putExtra("flag",1);
startActivity(i);
}
});
//搜索栏EditText添加监听
nEditText.addTextChangedListener(new TextWatcher() {
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}//文本改变之前执行
@Override
//文本改变的时候执行
public void onTextChanged(CharSequence s, int start, int before, int count) {
//如果长度为0
if (s.length() == 0) {
// //隐藏“删除”图片
// mImageView.setVisibility(View.GONE);
} else {//长度不为0
//显示“删除图片”
// mImageView.setVisibility(View.VISIBLE);
//显示ListView
// showListView();显示搜索项
}
public void onClick(View v) {
finish();
}
public void afterTextChanged(Editable s) { }//文本改变之后执行
});
}
}
}

@ -14,9 +14,12 @@ import android.widget.Toast;
import com.example.leudaemialikeme.Dao.InvitationDao;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.Data;
import com.example.leudaemialikeme.Utils.OkHttpUtil;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
public class SendInvitationActivity extends BaseActivity {
@ -62,44 +65,63 @@ public class SendInvitationActivity extends BaseActivity {
}
else{
long timeCurrent = System.currentTimeMillis();
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
//String time = sdf.format(timeCurrent);
// Log.e("输入的time:", time);
new Thread(new Runnable(){
@Override
public void run() {
try {
Data app = (Data)getApplication();
Log.e("type",type);
//invitation.iInsert(app.uid,type,title,detail,time,0,0);
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(SendInvitationActivity.this,
"提交成功",Toast.LENGTH_SHORT).show();
}
});
} catch (Exception exception) {
exception.printStackTrace();
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(SendInvitationActivity.this,
"帖子提交失败,请检查您的网络状况",Toast.LENGTH_SHORT).show();
}
});
}
}
}).start();
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
String time = sdf.format(timeCurrent);
Log.e("输入的time:", time);
Data app = (Data)getApplication();
Map<String,String> paramMap = new HashMap<String,String>();
paramMap.put("uid",String.valueOf(BaseActivity.owner.getNetId()));//需要获取登录用户的id
paramMap.put("btype",type);
paramMap.put("btittle",title);
paramMap.put("bcontent",detail);
paramMap.put("btime",time);
paramMap.put("blikeNum",String.valueOf(0));
paramMap.put("bcollectNum",String.valueOf(0));
paramMap.put("bbrowse",String.valueOf(0));
paramMap.put("flag",String.valueOf(0));
sendInvitationRequest(paramMap);
}
}
});
}
private void sendInvitationRequest(final Map paramMap){
new Thread(new Runnable(){
@Override
public void run() {
try{
String url=SendQuestionActivity.SERVER_URL+"/blog-servlet?action=send-invitation&useUnicode=true&characterEncoding=utf-8";
String jsonStr= OkHttpUtil.synPost(url, paramMap);
sendInvitationResponse(jsonStr);
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
private void sendInvitationResponse(final String jsonStr){
runOnUiThread(new Runnable(){
@Override
public void run() {
if (jsonStr.contains("success")){
Toast.makeText(SendInvitationActivity.this,
"提交成功",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(SendInvitationActivity.this,
"帖子提交失败,请检查您的网络状况",Toast.LENGTH_SHORT).show();
}
}
});
}
@SuppressLint("NonConstantResourceId")
public void onRadioButtonClicked(View view) {
RadioButton button = (RadioButton) view;
@ -110,11 +132,11 @@ public class SendInvitationActivity extends BaseActivity {
case R.id.SendInvitation_radio_experience:
case R.id.SendInvitation_radio_knowledge:
if (isChecked) {
type=button.getText().toString();
type=button.getText().toString().substring(0,2);
}
break;
default:
type="经验";
type="经验";
break;
}
}

@ -4,7 +4,6 @@ import android.annotation.SuppressLint;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
@ -13,9 +12,12 @@ import android.widget.Toast;
import com.example.leudaemialikeme.Dao.QuestionDao;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.Data;
import com.example.leudaemialikeme.Utils.OkHttpUtil;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
public class SendQuestionActivity extends BaseActivity {
@ -38,6 +40,7 @@ public class SendQuestionActivity extends BaseActivity {
setClick();
}
@SuppressWarnings("unchecked")
private void setClick() {
cancelView.setOnClickListener(new View.OnClickListener() {
@Override
@ -53,41 +56,35 @@ public class SendQuestionActivity extends BaseActivity {
title=titleText.getText().toString();
detail=detailText.getText().toString();
if(titleText.getText().toString().length()<10){
Log.e("输入的title:", String.valueOf(title.length()));
// Log.e("输入的title:", String.valueOf(title.length()));
Toast.makeText(SendQuestionActivity.this,
"您输入的字数尚不足,请完善您的问题以便获得更好的回答",Toast.LENGTH_SHORT).show();
}
else{
long timeCurrent = System.currentTimeMillis();
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
String time = sdf.format(timeCurrent);
// Log.e("输入的time:", time);
new Thread(new Runnable(){
@Override
public void run() {
try {
Data app = (Data)getApplication();
// question.qInsert(app.uid,title,detail,time,0,0,0);
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(SendQuestionActivity.this,
"提交成功",Toast.LENGTH_SHORT).show();
}
});
} catch (Exception exception) {
exception.printStackTrace();
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(SendQuestionActivity.this,
"问题提交失败,请检查您的网络状况",Toast.LENGTH_SHORT).show();
}
});
}
}
}).start();
// Log.e("输入的time:", time);
Map<String,String> paramMap = new HashMap<String,String>();
Data app = (Data)getApplication();
paramMap.put("uid",String.valueOf(BaseActivity.owner.getNetId())); // 需要获取登陆用户的id需改
// Log.e("uid",String.valueOf(app.uid));
// for(String key:paramMap.keySet())
// {
// Log.e("Key: "+key," Value: "+paramMap.get(key));
// }
paramMap.put("qtittle",title);
paramMap.put("qcontent",detail);
paramMap.put("qtime",time);
paramMap.put("qfollowNum",String.valueOf(0));
paramMap.put("qanswerNum",String.valueOf(0));
paramMap.put("qbrowseNum",String.valueOf(0));
paramMap.put("flag",String.valueOf(0));
sendQuestionRequest(paramMap);
}
}
});
@ -95,6 +92,43 @@ public class SendQuestionActivity extends BaseActivity {
}
private void sendQuestionRequest(final Map paramMap){
new Thread(new Runnable() {
@Override
public void run() {
try{
String url=SendQuestionActivity.SERVER_URL+"/question-servlet?action=send-question";
String jsonStr= OkHttpUtil.synPost(url, paramMap);
// for(Object key:paramMap.keySet())
// {
// Log.e("Key: "+key," Value: "+paramMap.get(key));
// }
QuestionResponse(jsonStr);
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
private void QuestionResponse(final String jsonStr){
runOnUiThread(new Runnable() {
@Override
public void run() {
if (jsonStr.contains("success")){
Toast.makeText(SendQuestionActivity.this,
"提交成功",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(SendQuestionActivity.this,
"问题提交失败,请检查您的网络状况", Toast.LENGTH_SHORT).show();
}
}
});
}
public void initViews(){
titleText=(EditText)findViewById(R.id.editText_question);

@ -5,12 +5,12 @@ import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import com.example.leudaemialikeme.Fragment.InfoChannelFragment;
import com.example.leudaemialikeme.Fragment.APNChannelFragment;
public class InfoPageFragmentAdapter extends FragmentPagerAdapter {
public class APNPageActivityAdapter extends FragmentPagerAdapter {
private String[] channelList;
private FragmentManager fm;
public InfoPageFragmentAdapter(@NonNull FragmentManager fm, String[] channelList) {
public APNPageActivityAdapter(@NonNull FragmentManager fm, String[] channelList) {
super(fm);
this.channelList = channelList;
this.fm = fm;
@ -19,13 +19,12 @@ public class InfoPageFragmentAdapter extends FragmentPagerAdapter {
@NonNull
@Override
public Fragment getItem(int position) {
String InfoCategoryTitle = channelList[position];
return InfoChannelFragment.newInstance(InfoCategoryTitle,position);
// return InfoChannelFragment.newInstance(InfoCategoryTitle);
String APNCategoryTitle = channelList[position];
return APNChannelFragment.newInstance(APNCategoryTitle);
}
@Override
public int getCount() {
return channelList.length;
}//返回有效视图的数量
}
}

@ -1,69 +0,0 @@
package com.example.leudaemialikeme.Adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Switch;
import android.widget.TextView;
import com.example.leudaemialikeme.R;
import java.util.ArrayList;
import java.util.List;
public class AdapterClock extends BaseAdapter {
private String[] names={"甘露聚糖肽胶囊","消癌平糖浆"};
private String[] time={"每天 8:00 14:00 19:00","每天 8:00 14:00 19:00"};
private List<Switch> list_switch;
private Context mContext;
private TextView tv1,tv2;
private Switch aSwitch;
public AdapterClock(Context context) {
mContext=context;
list_switch=new ArrayList<>();
}
public Switch getaSwitch(int position){
return list_switch.get(position);
}
@Override
public int getCount() {
return names.length;
}
@Override
public Object getItem(int i) {
return names[i];
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
view= LayoutInflater.from(mContext).inflate(R.layout.list_item,null);
tv1=(TextView)view.findViewById(R.id.md_name);
tv2=(TextView)view.findViewById(R.id.md_time);
aSwitch=(Switch)view.findViewById(R.id.sw);
list_switch.add(aSwitch);
tv1.setText(names[i]);
tv2.setText(time[i]);
return view;
}
}

@ -0,0 +1,156 @@
package com.example.leudaemialikeme.Adapter;
import android.content.Intent;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Activity.BaseActivity;
import com.example.leudaemialikeme.Activity.BlogDetailActivity;
import com.example.leudaemialikeme.Model.Blog;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.OkHttpUtil;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class BlogAdapter extends RecyclerView.Adapter<BlogAdapter.ViewHolder> {
// private List<Recnews> mRecnewsList;
private List<Blog> mBlogList = new ArrayList<Blog>();
private Blog blog;
// private View view;
// private Context context;
// ViewHolder holder;
static class ViewHolder extends RecyclerView.ViewHolder{
ImageView image;
TextView theme;
TextView intro;
TextView visNum;
TextView time;
LinearLayout linear;
TextView blog_id_view;
TextView blog_likeNum_view;
TextView blog_colNum_view;
TextView blog_uid_view;
TextView blog_content_view;
public ViewHolder(View view){
super(view);
blog_likeNum_view=(TextView)view.findViewById(R.id.likeNum);
blog_colNum_view=(TextView)view.findViewById(R.id.colNum);
blog_id_view=(TextView)view.findViewById(R.id.bid);
blog_uid_view=(TextView)view.findViewById(R.id.uid);
image=(ImageView)view.findViewById(R.id.recNews_image);
theme=(TextView)view.findViewById(R.id.recNews_theme);
intro=(TextView)view.findViewById(R.id.recNews_intro);
visNum=(TextView)view.findViewById(R.id.recNews_visNum);
time=(TextView)view.findViewById(R.id.recNews_time);
linear=(LinearLayout)view.findViewById(R.id.news);
blog_content_view=(TextView)view.findViewById(R.id.content);
}
}
public BlogAdapter(List<Blog> blogList){
mBlogList=blogList;
// Log.e("recAdapter中mBlogList的数据",String.valueOf(blogList));
}
public BlogAdapter(){
}
public void setRecnewsList(List<Blog> blogList){
mBlogList=blogList;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.recnews_item,parent,false);
ViewHolder holder=new ViewHolder(view);
// context=parent.getContext();
holder.linear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
UpdateBrowseNum(holder.blog_id_view.getText().toString());
Intent intent=new Intent(view.getContext(), BlogDetailActivity.class);
// intent.putExtra("from",String.valueOf(view.getContext()));
intent.putExtra("bid",holder.blog_id_view.getText().toString());//新增bid
// Log.e("传输前的bid",holder.blog_id_view.getText().toString());
intent.putExtra("type",2);//帖子2
intent.putExtra("bTitle",holder.theme.getText().toString());
intent.putExtra("bContent",holder.blog_content_view.getText().toString());
intent.putExtra("bColNum",holder.blog_colNum_view.getText().toString());
intent.putExtra("bViewNum",String.valueOf(Integer.parseInt(holder.visNum.getText().toString())+1));
intent.putExtra("uid",holder.blog_uid_view.getText().toString());
view.getContext().startActivity(intent);
}
});
return holder;
}
@Override
public void onBindViewHolder(@NonNull BlogAdapter.ViewHolder holder, int position) {
blog=mBlogList.get(position);
// holder.image.setImageResource(R.drawable.rec_news1);
holder.visNum.setText(String.valueOf(blog.getBbrowse()));
holder.intro.setText(blog.getBcontent());
holder.theme.setText(blog.getBtittle());
holder.time.setText(String.valueOf(blog.getBtime()).substring(0,19));
holder.blog_id_view.setText(String.valueOf(blog.getBid()));
holder.blog_colNum_view.setText(String.valueOf(blog.getBcollectNum()));
holder.blog_likeNum_view.setText(String.valueOf(blog.getBlikeNum()));
holder.blog_uid_view.setText(String.valueOf(blog.getUid()));
holder.blog_content_view.setText(blog.getBcontent());
}
@Override
public int getItemCount() {
return mBlogList.size();
}
private void UpdateBrowseNum(String bid){
String url = BaseActivity.SERVER_URL + "/browse-servlet?action=UpdateBrowse";
Map<String,String> paramMap = new HashMap<String,String>();
Log.e("获取浏览量的返回结果","浏览量");
paramMap.put("id", bid);
//登录后需要将uid换为这部分
// paramMap.put("uid", String.valueOf(BaseActivity.owner.getNetId()));
paramMap.put("uid", String.valueOf(BaseActivity.owner.getNetId()));
// 只对帖子进行更新
paramMap.put("type", String.valueOf(2));
new Thread(new Runnable() {
@Override
public void run() {
Log.e("获取浏览量的返回结果uid",String.valueOf(1));
String jsonStr = OkHttpUtil.synPost(url,paramMap);
Log.e("浏览量的返回结果",jsonStr);
// blog.setBbrowse(blog.getBbrowse()+1);
// ((AppCompatActivity) context).runOnUiThread(new Runnable(){
// @Override
// public void run() {
//// holder.visNum.setText(String.valueOf(blog.getBbrowse()));
// }
// });
}
}).start();
}
}

@ -9,7 +9,9 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Model.Friend;
import com.example.leudaemialikeme.Model.Message;
import com.example.leudaemialikeme.Model.MessageItemView;
import com.example.leudaemialikeme.Model.Owner;
import com.example.leudaemialikeme.R;
@ -17,8 +19,9 @@ import java.util.ArrayList;
import java.util.List;
public class ChatAdapter extends RecyclerView.Adapter<ChatAdapter.ViewHolder> {
private List<Message> messageList = new ArrayList<>();
private List<Message> messageList = new ArrayList<Message>();
private Owner owner;
private Friend friend;
static class ViewHolder extends RecyclerView.ViewHolder{
LinearLayout msg_content_left;
@ -32,6 +35,8 @@ public class ChatAdapter extends RecyclerView.Adapter<ChatAdapter.ViewHolder> {
msg_content_right = (LinearLayout) view.findViewById(R.id.msg_content_right);
left_msg = (TextView) view.findViewById(R.id.left_msg);
right_msg = (TextView) view.findViewById(R.id.right_msg);
layouts.add(msg_content_left);
layouts.add(msg_content_right);
}
public void setVisibility(LinearLayout layout){
@ -45,13 +50,12 @@ public class ChatAdapter extends RecyclerView.Adapter<ChatAdapter.ViewHolder> {
}
}
public ChatAdapter(List<Message> messageList, Owner owner){
this.messageList = messageList;
this.owner = owner;
public ChatAdapter(MessageItemView messageItemView){
this.messageList = messageItemView.messages;
this.owner = messageItemView.owner;
this.friend = messageItemView.friend;
}
@NonNull
@Override
public ChatAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

@ -1,60 +0,0 @@
package com.example.leudaemialikeme.Adapter;
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.example.leudaemialikeme.Model.Collect;
import com.example.leudaemialikeme.R;
import java.util.List;
public class CollectAdapter extends RecyclerView.Adapter<CollectAdapter.ViewHolder>{
private List<Collect> collectList;
//重写构造方法
public CollectAdapter(List<Collect> collectList){
this.collectList = collectList;
}
public int getItemCount(){
return collectList.size();
}
//内部类
static class ViewHolder extends RecyclerView.ViewHolder {
TextView collectTitle,collectName,collectContent,collectRead;
ImageView collectIcon,collectImg;
public ViewHolder(@NonNull View itemView){
super(itemView);
this.collectTitle = (TextView)itemView.findViewById(R.id.collectTitle);
this.collectIcon = (ImageView)itemView.findViewById(R.id.collectIcon);
this.collectName = (TextView)itemView.findViewById(R.id.collectName);
this.collectContent = (TextView)itemView.findViewById(R.id.collectContent);
this.collectImg = (ImageView)itemView.findViewById(R.id.collectImg);
this.collectRead = (TextView)itemView.findViewById(R.id.collectRead);
}
}
//重写 onCreateViewHolder()方法
@Override
public CollectAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.collect_item,parent,false);
CollectAdapter.ViewHolder holder=new CollectAdapter.ViewHolder(view);
return holder;
}
//重写onBindViewHolder()方法
@Override
public void onBindViewHolder(@NonNull ViewHolder holder,int position){
Collect collect = collectList.get(position);
holder.collectTitle.setText(collect.getCollectTitle());
holder.collectName.setText(collect.getCollectName());
holder.collectContent.setText(collect.getCollectContent());
holder.collectRead.setText(collect.getCollectRead());
holder.collectIcon.setImageResource(collect.getCollectIconId());
holder.collectImg.setImageResource(collect.getCollectImgId());
}
}

@ -0,0 +1,56 @@
package com.example.leudaemialikeme.Adapter;
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.example.leudaemialikeme.Model.Blog;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.TimeUtil;
import java.util.List;
public class CollectBlogAdapter extends RecyclerView.Adapter<CollectBlogAdapter.ViewHolder>{
private List<Blog> collectBlogList;
//重写构造方法
public CollectBlogAdapter(List<Blog> collectBlogList){
this.collectBlogList = collectBlogList;
}
public int getItemCount(){
return collectBlogList.size();
}
//内部类
static class ViewHolder extends RecyclerView.ViewHolder {
TextView blog_title,blog_info,blog_read,blog_time;
public ViewHolder(@NonNull View itemView){
super(itemView);
this.blog_title = itemView.findViewById(R.id.blog_title);
this.blog_info = itemView.findViewById(R.id.blog_info);
this.blog_read = itemView.findViewById(R.id.blog_read);
this.blog_time = itemView.findViewById(R.id.blog_time);
}
}
//重写 onCreateViewHolder()方法
@Override
public CollectBlogAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.collect_blog_item,parent,false);
CollectBlogAdapter.ViewHolder holder=new CollectBlogAdapter.ViewHolder(view);
return holder;
}
//重写onBindViewHolder()方法
@Override
public void onBindViewHolder(@NonNull ViewHolder holder,int position){
Blog blog = collectBlogList.get(position);
holder.blog_title.setText(blog.getBtittle());
holder.blog_info.setText(blog.getBcontent());
holder.blog_read.setText(String.valueOf(blog.getBbrowse()));
holder.blog_time.setText(TimeUtil.timeToString(blog.getBtime()));
}
}

@ -0,0 +1,59 @@
package com.example.leudaemialikeme.Adapter;
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.example.leudaemialikeme.Model.News;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.TimeUtil;
import org.w3c.dom.Text;
import java.util.List;
public class CollectNewsAdapter extends RecyclerView.Adapter<CollectNewsAdapter.ViewHolder>{
private List<News> collectNewsList;
//重写构造方法
public CollectNewsAdapter(List<News> collectNewsList){
this.collectNewsList = collectNewsList;
}
public int getItemCount(){
return collectNewsList.size();
}
//内部类
static class ViewHolder extends RecyclerView.ViewHolder {
TextView news_title,news_info,news_read,news_time;
public ViewHolder(@NonNull View itemView){
super(itemView);
this.news_title = (TextView)itemView.findViewById(R.id.News_title);
this.news_info = (TextView)itemView.findViewById(R.id.News_info);
this.news_read = (TextView)itemView.findViewById(R.id.News_read);
this.news_time = (TextView)itemView.findViewById(R.id.News_time);
}
}
//重写 onCreateViewHolder()方法
@Override
public CollectNewsAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.collect_news_item,parent,false);
CollectNewsAdapter.ViewHolder holder=new CollectNewsAdapter.ViewHolder(view);
return holder;
}
//重写onBindViewHolder()方法
@Override
public void onBindViewHolder(@NonNull ViewHolder holder,int position){
News news = collectNewsList.get(position);
holder.news_title.setText(news.getStittle());
holder.news_info.setText(news.getScontent());
holder.news_read.setText(String.valueOf(news.getSbrowseNum()));
holder.news_time.setText(TimeUtil.timeToString(news.getStime()));
}
}

@ -4,7 +4,7 @@ import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import com.example.leudaemialikeme.Fragment.AnswerCollectFragment;
import com.example.leudaemialikeme.Fragment.BlogCollectFragment;
import com.example.leudaemialikeme.Fragment.NewsCollectFragment;
public class CollectPageFragmentAdapter extends FragmentPagerAdapter {
@ -24,7 +24,7 @@ public class CollectPageFragmentAdapter extends FragmentPagerAdapter {
return NewsCollectFragment.newInstance(collectCategoryTitle);
}
else {
return AnswerCollectFragment.newInstance(collectCategoryTitle);
return BlogCollectFragment.newInstance(collectCategoryTitle);
}
}
@Override

@ -0,0 +1,58 @@
package com.example.leudaemialikeme.Adapter;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Model.Comment;
import com.example.leudaemialikeme.R;
import java.util.List;
public class CommentAdapter extends RecyclerView.Adapter<CommentAdapter.ViewHolder>{
List<Comment> mCommentList;
Comment comment;
static class ViewHolder extends RecyclerView.ViewHolder{
TextView comName;
TextView comContent;
TextView comTime;
public ViewHolder(View view){
super(view);
comName=(TextView) view.findViewById(R.id.comment_user_name);
comContent=(TextView)view.findViewById(R.id.comment_content);
comTime=(TextView)view.findViewById(R.id.comment_time);
}
}
public void setMCommentList(List<Comment> commentList){
mCommentList=commentList;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.comment_item,parent,false);
CommentAdapter.ViewHolder holder = new CommentAdapter.ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull CommentAdapter.ViewHolder holder, int position) {
comment=mCommentList.get(position);
holder.comName.setText(comment.getUName());
holder.comContent.setText(comment.getContent());
holder.comTime.setText(String.valueOf(comment.getTime()).substring(0,19));
}
@Override
public int getItemCount() {
return mCommentList.size();
}
}

@ -1,54 +1,94 @@
package com.example.leudaemialikeme.Adapter;
import android.content.Intent;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Activity.AddEventActivity;
import com.example.leudaemialikeme.Model.Event;
import com.example.leudaemialikeme.R;
import java.util.List;
import java.util.Map;
public class EventAdapter extends RecyclerView.Adapter<EventAdapter.ViewHolder>{
private List<Event> meventList;
// private List<Event> meventList;
private List<Map<String,String>> mcontentList;
//重写构造方法
public EventAdapter(List<Event> meventList){
this.meventList = meventList;
public EventAdapter(List<Map<String,String>> contentList){
this.mcontentList = contentList;
}
public int getItemCount(){
return meventList.size();
return mcontentList.size();
}
//内部类
static class ViewHolder extends RecyclerView.ViewHolder {
View eventView;
TextView event_day,event_month,event_info,event_time;
TextView event_place,event_doctor_name,event_create_time;
LinearLayout event_item_layout;
public ViewHolder(@NonNull View itemView){
super(itemView);
eventView = itemView;
this.event_day = (TextView)itemView.findViewById(R.id.event_day);
this.event_month = (TextView)itemView.findViewById(R.id.event_month);
this.event_info = (TextView)itemView.findViewById(R.id.event_info);
this.event_time = (TextView)itemView.findViewById(R.id.event_time);
this.event_place = itemView.findViewById(R.id.event_place);
this.event_doctor_name = itemView.findViewById(R.id.event_doctor_name);
this.event_create_time = itemView.findViewById(R.id.event_create_time);
this.event_item_layout = itemView.findViewById(R.id.event_item_layout);
}
}
//重写 onCreateViewHolder()方法
@Override
public EventAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
public EventAdapter.ViewHolder onCreateViewHolder(final ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.event_item,parent,false);
EventAdapter.ViewHolder holder=new EventAdapter.ViewHolder(view);
// EventAdapter.ViewHolder holder=new EventAdapter.ViewHolder(view);
final ViewHolder holder = new ViewHolder(view);
holder.eventView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int position = holder.getAdapterPosition();
String event_day = mcontentList.get(position).get("event_day");
String event_month = mcontentList.get(position).get("event_month");
String event_info = mcontentList.get(position).get("event_info");
String event_place = mcontentList.get(position).get("event_place");
String event_doctor_name = mcontentList.get(position).get("event_doctor_name");
String event_time = mcontentList.get(position).get("event_time");
String event_create_time = mcontentList.get(position).get("event_create_time");
Intent intent = new Intent(parent.getContext(), AddEventActivity.class);
intent.putExtra(AddEventActivity.EVENT_DAY,event_day);
intent.putExtra(AddEventActivity.EVENT_MONTH,event_month);
intent.putExtra(AddEventActivity.EVENT_INFO,event_info);
intent.putExtra(AddEventActivity.EVENT_PLACE,event_place);
intent.putExtra(AddEventActivity.EVENT_DOCTOR_NAME,event_doctor_name);
intent.putExtra(AddEventActivity.EVENT_TIME,event_time);
intent.putExtra(AddEventActivity.EVENT_CREATE_TIME,event_create_time);
parent.getContext().startActivity(intent);
}
});
return holder;
}
//重写onBindViewHolder()方法
@Override
public void onBindViewHolder(@NonNull ViewHolder holder,int position){
Event event = meventList.get(position);
holder.event_day.setText(event.getEvent_day());
holder.event_month.setText(event.getEvent_month());
holder.event_info.setText(event.getEvent_info());
holder.event_time.setText(event.getEvent_time());
holder.event_day.setText(mcontentList.get(position).get("event_day"));
holder.event_month.setText(mcontentList.get(position).get("event_month"));
holder.event_info.setText(mcontentList.get(position).get("event_info"));
holder.event_time.setText(mcontentList.get(position).get("event_time"));
holder.event_place.setText(mcontentList.get(position).get("event_place"));
holder.event_doctor_name.setText(mcontentList.get(position).get("event_doctor_name"));
holder.event_create_time.setText(mcontentList.get(position).get("event_create_time"));
}
}

@ -0,0 +1,56 @@
package com.example.leudaemialikeme.Adapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Model.Blog;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.TimeUtil;
import java.util.List;
public class HistoryBlogAdapter extends RecyclerView.Adapter<HistoryBlogAdapter.ViewHolder>{
private List<Blog> historyBlogList;
//重写构造方法
public HistoryBlogAdapter(List<Blog> historyBlogList){
this.historyBlogList = historyBlogList;
}
public int getItemCount(){
return historyBlogList.size();
}
//内部类
static class ViewHolder extends RecyclerView.ViewHolder {
TextView blog_title,blog_info,blog_read,blog_time;
public ViewHolder(@NonNull View itemView){
super(itemView);
this.blog_title = itemView.findViewById(R.id.blog_title);
this.blog_info = itemView.findViewById(R.id.blog_info);
this.blog_read = itemView.findViewById(R.id.blog_read);
this.blog_time = itemView.findViewById(R.id.blog_time);
}
}
//重写 onCreateViewHolder()方法
@Override
public HistoryBlogAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.collect_blog_item,parent,false);
HistoryBlogAdapter.ViewHolder holder=new HistoryBlogAdapter.ViewHolder(view);
return holder;
}
//重写onBindViewHolder()方法
@Override
public void onBindViewHolder(@NonNull ViewHolder holder,int position){
Blog blog = historyBlogList.get(position);
holder.blog_title.setText(blog.getBtittle());
holder.blog_info.setText(blog.getBcontent());
holder.blog_read.setText(String.valueOf(blog.getBbrowse()));
holder.blog_time.setText(TimeUtil.timeToString(blog.getBtime()));
}
}

@ -0,0 +1,57 @@
package com.example.leudaemialikeme.Adapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Model.News;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.TimeUtil;
import java.util.List;
public class HistoryNewsAdapter extends RecyclerView.Adapter<HistoryNewsAdapter.ViewHolder>{
private List<News> historyNewsList;
//重写构造方法
public HistoryNewsAdapter(List<News> historyNewsList){
this.historyNewsList = historyNewsList;
}
public int getItemCount(){
return historyNewsList.size();
}
//内部类
static class ViewHolder extends RecyclerView.ViewHolder {
TextView news_title,news_info,news_read,news_time;
public ViewHolder(@NonNull View itemView){
super(itemView);
this.news_title = (TextView)itemView.findViewById(R.id.News_title);
this.news_info = (TextView)itemView.findViewById(R.id.News_info);
this.news_read = (TextView)itemView.findViewById(R.id.News_read);
this.news_time = (TextView)itemView.findViewById(R.id.News_time);
}
}
//重写 onCreateViewHolder()方法
@Override
public HistoryNewsAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.collect_news_item,parent,false);
HistoryNewsAdapter.ViewHolder holder=new HistoryNewsAdapter.ViewHolder(view);
return holder;
}
//重写onBindViewHolder()方法
@Override
public void onBindViewHolder(@NonNull ViewHolder holder,int position){
News news = historyNewsList.get(position);
holder.news_title.setText(news.getStittle());
holder.news_info.setText(news.getScontent());
holder.news_read.setText(String.valueOf(news.getSbrowseNum()));
holder.news_time.setText(TimeUtil.timeToString(news.getStime()));
}
}

@ -0,0 +1,36 @@
package com.example.leudaemialikeme.Adapter;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import com.example.leudaemialikeme.Fragment.BlogHistoryFragment;
import com.example.leudaemialikeme.Fragment.NewsHistoryFragment;
import com.example.leudaemialikeme.Fragment.QuestionHistoryFragment;
public class HistoryPageFragmentAdapter extends FragmentPagerAdapter {
private String[] channelList;
private FragmentManager fm;
public HistoryPageFragmentAdapter(FragmentManager fm, String[] channelList) {
super(fm);
this.channelList = channelList;
this.fm=fm;
}
@Override
public Fragment getItem(int idx) {
String collectCategoryTitle = channelList[idx];
if(collectCategoryTitle.equals(" 资讯 "))
{
return NewsHistoryFragment.newInstance(collectCategoryTitle);
}
else if(collectCategoryTitle.equals(" 问题 ")){
return QuestionHistoryFragment.newInstance(collectCategoryTitle);
}else{
return BlogHistoryFragment.newInstance(collectCategoryTitle);
}
}
@Override
public int getCount() {
return channelList.length;
} }

@ -0,0 +1,91 @@
package com.example.leudaemialikeme.Adapter;
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Activity.BaseActivity;
import com.example.leudaemialikeme.Activity.LoginActivity;
import com.example.leudaemialikeme.Activity.QuestionDetailActivity;
import com.example.leudaemialikeme.Model.Question;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.OkHttpUtil;
import com.example.leudaemialikeme.Utils.TimeUtil;
import java.util.List;
public class HistoryQuestionAdapter extends RecyclerView.Adapter<HistoryQuestionAdapter.ViewHolder>{
private List<Question> historyQuestionList;
private Context context;
//重写构造方法
public HistoryQuestionAdapter(List<Question> historyQuestionList, Context context){
this.historyQuestionList = historyQuestionList;
this.context = context;
}
public int getItemCount(){
return historyQuestionList.size();
}
//内部类
static class ViewHolder extends RecyclerView.ViewHolder {
private TextView questionTitle,questionInfo,questionRead,questionTime,question_id;
public ViewHolder(@NonNull View itemView){
super(itemView);
this.question_id = itemView.findViewById(R.id.question_id);
this.questionTitle = itemView.findViewById(R.id.questionTitle);
this.questionInfo = itemView.findViewById(R.id.questionInfo);
this.questionRead = itemView.findViewById(R.id.questionRead);
this.questionTime = itemView.findViewById(R.id.questionTime);
}
}
//重写 onCreateViewHolder()方法
@Override
public HistoryQuestionAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.question_item,parent,false);
HistoryQuestionAdapter.ViewHolder holder=new HistoryQuestionAdapter.ViewHolder(view);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int qid = Integer.parseInt(holder.question_id.getText().toString());
addQuestionBrowse(qid);
Intent intent = new Intent(context, QuestionDetailActivity.class);
intent.putExtra("qid", qid);
context.startActivity(intent);
}
});
return holder;
}
private void addQuestionBrowse(int qid) {
new Thread(new Runnable() {
@Override
public void run() {
try{
String url = LoginActivity.SERVER_URL+"/main-servlet?action=addQuestionBrowse&qid="+qid+"&iduser="+ BaseActivity.owner.getNetId();
OkHttpUtil.synGet(url);
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
//重写onBindViewHolder()方法
@Override
public void onBindViewHolder(@NonNull ViewHolder holder,int position){
Question question = historyQuestionList.get(position);
holder.question_id.setText(String.valueOf(question.getQid()));
holder.questionTitle.setText(question.getQtittle());
holder.questionInfo.setText(question.getQcontent());
holder.questionRead.setText(String.valueOf(question.getQbrowseNum()));
holder.questionTime.setText(TimeUtil.timeToString(question.getQtime()));
}
}

@ -11,7 +11,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Activity.DetailActivity;
import com.example.leudaemialikeme.Activity.BlogDetailActivity;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Model.Recnews;
@ -50,7 +50,7 @@ public class InfoAdapter extends RecyclerView.Adapter<InfoAdapter.ViewHolder> {
holder.linear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(view.getContext(), DetailActivity.class);
Intent intent=new Intent(view.getContext(), BlogDetailActivity.class);
//intent.putExtra("from",String.valueOf(view.getContext()));
//Log.e("activity",String.valueOf(view.getContext()));
view.getContext().startActivity(intent);

@ -20,7 +20,7 @@ public class InvitationPageFragmentAdapter extends FragmentPagerAdapter {
@Override
public Fragment getItem(int position) {
String InvitationCategoryTitle = channelList[position];
return InvitationChannelFragment.newInstance(InvitationCategoryTitle);
return InvitationChannelFragment.newInstance(InvitationCategoryTitle,position);
}
@Override

@ -7,9 +7,13 @@ import androidx.fragment.app.FragmentPagerAdapter;
import com.example.leudaemialikeme.Fragment.MessageChannelFragment;
import java.util.ArrayList;
import java.util.List;
public class MessagePageFragmentAdapter extends FragmentPagerAdapter {
private String[] channelList;
private FragmentManager fm;
private List<MessageChannelFragment> mcfList = new ArrayList<>();
public MessagePageFragmentAdapter(@NonNull FragmentManager fm, String[] channelList) {
super(fm);
this.channelList = channelList;
@ -20,12 +24,17 @@ public class MessagePageFragmentAdapter extends FragmentPagerAdapter {
@Override
public Fragment getItem(int position) {
String MessageCategoryTitle = channelList[position];
return MessageChannelFragment.newInstance(MessageCategoryTitle);
MessageChannelFragment mcf = MessageChannelFragment.newInstance(MessageCategoryTitle);
mcfList.add(mcf);
return mcf;
}
@Override
public int getCount() {
return channelList.length;
}
public MessageChannelFragment getMcf(int i){
return mcfList.get(i);
}
}

@ -1,5 +1,7 @@
package com.example.leudaemialikeme.Adapter;
import android.content.Intent;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -10,31 +12,39 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Model.Msg;
import com.example.leudaemialikeme.Activity.BaseActivity;
import com.example.leudaemialikeme.Activity.ChatActivity;
import com.example.leudaemialikeme.Dao.MessageDao;
import com.example.leudaemialikeme.Model.Chat;
import com.example.leudaemialikeme.R;
import java.util.List;
public class MsgAdapter extends RecyclerView.Adapter<MsgAdapter.ViewHolder> {
private List<Msg> msgList;
private List<Chat> chatList;
private MessageDao messageDao = new MessageDao();
static class ViewHolder extends RecyclerView.ViewHolder{
ImageView portrait;
TextView nickname;
TextView introduction;
LinearLayout linear_msg;
ImageView point;
TextView chat_friend_id;
public ViewHolder(View view){
super(view);
portrait = (ImageView)view.findViewById(R.id.img_portrait);
nickname = (TextView)view.findViewById(R.id.text_nickname);
introduction = (TextView)view.findViewById(R.id.text_introduction);
linear_msg = (LinearLayout)view.findViewById(R.id.linear_msg);
point = (ImageView)view.findViewById(R.id.img_unread);
chat_friend_id = (TextView)view.findViewById(R.id.chat_friend_id);
}
}
public MsgAdapter(List<Msg> msgList) {
this.msgList = msgList;
public MsgAdapter(List<Chat> chatList) {
this.chatList = chatList;
}
@NonNull
@ -42,27 +52,43 @@ public class MsgAdapter extends RecyclerView.Adapter<MsgAdapter.ViewHolder> {
public MsgAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.pivate_msg_item,parent,false);
MsgAdapter.ViewHolder holder=new MsgAdapter.ViewHolder(view);
holder.linear_msg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//TODO 跳转到聊天界面
}
});
// holder.linear_msg.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View view) {
//
// Intent intent = new Intent(view.getContext(), ChatActivity.class);
// intent.putExtra("friendId", fdddddddd);
// }
// });
return holder;
}
@Override
public void onBindViewHolder(@NonNull MsgAdapter.ViewHolder holder, int position) {
Msg msg = msgList.get(position);
holder.portrait.setImageResource(msg.getPortraitID());
holder.introduction.setText(String.valueOf(msg.getIntroduction()));
holder.nickname.setText(msg.getNickname());
public void onBindViewHolder(@NonNull final MsgAdapter.ViewHolder holder, int position) {
final Chat chat = chatList.get(position);
holder.introduction.setText(String.valueOf(chat.getLastMessage()));
holder.nickname.setText(chat.getFriendName());
holder.chat_friend_id.setText(String.valueOf(chat.getFriendId()));
Log.d("MsgAdapter","chat_friend_id:"+chat.getFriendId());
if(chat.getFlag()==1){
holder.point.setVisibility(View.GONE);
}
holder.itemView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
messageDao.changeMsgStatus(Integer.parseInt(holder.chat_friend_id.getText().toString()), BaseActivity.owner.getNetId());
Intent intent = new Intent(v.getContext(), ChatActivity.class);
intent.putExtra("friendNetId",chat.getFriendId());
v.getContext().startActivity(intent);
holder.point.setVisibility(View.GONE);
// checkFriendRequest(params);
}
});
}
@Override
public int getItemCount() {
return msgList.size();
return chatList.size();
}
}

@ -0,0 +1,72 @@
package com.example.leudaemialikeme.Adapter;
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Activity.QuestionDetailActivity;
import com.example.leudaemialikeme.Model.MyAnswerItemView;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.TimeUtil;
import java.util.List;
public class MyAnswerAdapter extends RecyclerView.Adapter<MyAnswerAdapter.ViewHolder>{
private List<MyAnswerItemView> answerList;
private Context context;
public MyAnswerAdapter(List<MyAnswerItemView> answerList, Context context) {
this.answerList = answerList;
this.context = context;
}
static class ViewHolder extends RecyclerView.ViewHolder{
private TextView text_answer_qid;
private TextView text_my_answer_title;
private TextView text_my_answer;
private TextView text_answer_time;
public ViewHolder(@NonNull View itemView) {
super(itemView);
text_answer_qid = itemView.findViewById(R.id.text_answer_qid);
text_my_answer_title = itemView.findViewById(R.id.text_my_answer_title);
text_my_answer = itemView.findViewById(R.id.text_my_answer);
text_answer_time = itemView.findViewById(R.id.text_answer_time);
}
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.my_answer_item,parent,false);
final MyAnswerAdapter.ViewHolder holder=new MyAnswerAdapter.ViewHolder(view);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, QuestionDetailActivity.class);
intent.putExtra("qid", Integer.parseInt(holder.text_answer_qid.getText().toString()));
context.startActivity(intent);
}
});
return holder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
MyAnswerItemView answer = answerList.get(position);
holder.text_answer_qid.setText(String.valueOf(answer.getQid()));
holder.text_my_answer_title.setText(answer.getQtitle());
holder.text_my_answer.setText(answer.getAcontent());
holder.text_answer_time.setText(TimeUtil.timeToString(answer.getAnswerTime()));
}
@Override
public int getItemCount() {
return answerList.size();
}
}

@ -0,0 +1,74 @@
package com.example.leudaemialikeme.Adapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Model.Blog;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.TimeUtil;
import java.util.ArrayList;
import java.util.List;
public class MyBlogAdapter extends RecyclerView.Adapter<MyBlogAdapter.ViewHolder>{
List<Blog> blogList = new ArrayList<>();
public MyBlogAdapter(List<Blog> blogList){
this.blogList = blogList;
}
static class ViewHolder extends RecyclerView.ViewHolder{
private TextView text_my_blog_id;
private TextView text_my_blog_title;
private TextView text_my_blog_content;
private TextView text_my_blog_browse;
private TextView text_my_blog_time;
private TextView text_my_blog_flag;
public ViewHolder(@NonNull View itemView) {
super(itemView);
text_my_blog_id = itemView.findViewById(R.id.text_my_blog_id);
text_my_blog_title = itemView.findViewById(R.id.text_my_blog_title);
text_my_blog_content = itemView.findViewById(R.id.text_my_blog_content);
text_my_blog_browse = itemView.findViewById(R.id.text_my_blog_browse);
text_my_blog_time = itemView.findViewById(R.id.text_my_blog_time);
text_my_blog_flag = itemView.findViewById(R.id.text_my_blog_flag);
}
}
@NonNull
@Override
public MyBlogAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.my_blog_item,parent,false);
MyBlogAdapter.ViewHolder holder = new MyBlogAdapter.ViewHolder(view);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//TODO 跳转到帖子的详情页
}
});
return holder;
}
@Override
public void onBindViewHolder(@NonNull MyBlogAdapter.ViewHolder holder, int position) {
Blog blog = blogList.get(position);
holder.text_my_blog_id.setText(String.valueOf(blog.getBid()));
holder.text_my_blog_title.setText(blog.getBtittle());
holder.text_my_blog_content.setText(blog.getBcontent());
holder.text_my_blog_browse.setText(String.valueOf(blog.getBbrowse()));
holder.text_my_blog_time.setText(TimeUtil.timeToString(blog.getBtime()));
if(blog.getFlag()==1)
holder.text_my_blog_flag.setText("已审核");
}
@Override
public int getItemCount() {
return blogList.size();
}
}

@ -1,5 +1,8 @@
package com.example.leudaemialikeme.Adapter;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -8,46 +11,90 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Model.MyQuestion;
import com.example.leudaemialikeme.Activity.BaseActivity;
import com.example.leudaemialikeme.Activity.LoginActivity;
import com.example.leudaemialikeme.Activity.QuestionDetailActivity;
import com.example.leudaemialikeme.Model.Question;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.OkHttpUtil;
import com.example.leudaemialikeme.Utils.TimeUtil;
import java.util.List;
public class MyQuestionAdapter extends RecyclerView.Adapter<MyQuestionAdapter.ViewHolder>{
private List<MyQuestion> myQuestionList;
private List<Question> questionList;
private Context context;
//重写构造方法
public MyQuestionAdapter(List<MyQuestion> myQuestionList){
this.myQuestionList = myQuestionList;
}
public int getItemCount(){
return myQuestionList.size();
public MyQuestionAdapter(List<Question> questionList, Context context){
this.questionList = questionList;
this.context = context;
}
//内部类
static class ViewHolder extends RecyclerView.ViewHolder {
TextView questionInfo,questionRead,questionTime;
private TextView text_my_question_id;
private TextView text_my_question_title;
private TextView text_my_question_browse;
private TextView text_my_question_time;
private TextView text_my_question_flag;
public ViewHolder(@NonNull View itemView){
super(itemView);
this.questionInfo = (TextView)itemView.findViewById(R.id.myQuestionInfo);
this.questionRead = (TextView)itemView.findViewById(R.id.myQuestionRead);
this.questionTime = (TextView)itemView.findViewById(R.id.myQuestionTime);
text_my_question_id = itemView.findViewById(R.id.text_my_question_id);
text_my_question_title = itemView.findViewById(R.id.text_my_question_title);
text_my_question_browse = itemView.findViewById(R.id.text_my_question_browse);
text_my_question_time = itemView.findViewById(R.id.text_my_question_time);
text_my_question_flag = itemView.findViewById(R.id.text_my_question_flag);
}
}
//重写 onCreateViewHolder()方法
@Override
public MyQuestionAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.my_question_item,parent,false);
MyQuestionAdapter.ViewHolder holder=new MyQuestionAdapter.ViewHolder(view);
final MyQuestionAdapter.ViewHolder holder=new MyQuestionAdapter.ViewHolder(view);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int qid = Integer.parseInt(holder.text_my_question_id.getText().toString());
addQuestionBrowse(qid);
Intent intent = new Intent(context, QuestionDetailActivity.class);
intent.putExtra("qid", qid);
context.startActivity(intent);
}
});
return holder;
}
private void addQuestionBrowse(int qid) {
new Thread(new Runnable() {
@Override
public void run() {
try{
Log.e("添加一条浏览记录","发送请求");
String url = LoginActivity.SERVER_URL+"/main-servlet?action=addQuestionBrowse&qid="+qid+"&iduser="+ BaseActivity.owner.getNetId();
OkHttpUtil.synGet(url);
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
//重写onBindViewHolder()方法
@Override
public void onBindViewHolder(@NonNull MyQuestionAdapter.ViewHolder holder, int position){
MyQuestion question = myQuestionList.get(position);
holder.questionInfo.setText(question.getMyQuestionInfo());
holder.questionRead.setText(question.getMyQuestionRead());
holder.questionTime.setText(question.getMyQuestionTime());
Question question = questionList.get(position);
holder.text_my_question_id.setText(String.valueOf(question.getQid()));
holder.text_my_question_title.setText(question.getQtittle());
holder.text_my_question_browse.setText(String.valueOf(question.getQbrowseNum()));
holder.text_my_question_time.setText(TimeUtil.timeToString(question.getQtime()));
if(question.getFlag()==1)
holder.text_my_question_flag.setText("已审核");
}
@Override
public int getItemCount(){
return questionList.size();
}
}

@ -1,163 +0,0 @@
package com.example.leudaemialikeme.Adapter;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Activity.BaseActivity;
import com.example.leudaemialikeme.Activity.NewsDetailActivity;
import com.example.leudaemialikeme.Model.News;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.OkHttpUtil;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class NewsAdapter extends RecyclerView.Adapter<NewsAdapter.ViewHolder>{
private List<News> mNewsList = new ArrayList<News>();
private News news;
static class ViewHolder extends RecyclerView.ViewHolder{
private TextView text_news_id;
private Context context;
ImageView image;
private TextView theme;
private TextView intro;
TextView visNum;
TextView time;
LinearLayout linear;
public ViewHolder(View view){
super(view);
text_news_id = itemView.findViewById(R.id.text_news_id);//新增的newsid
image=(ImageView)view.findViewById(R.id.recNews_image);//图片
theme=(TextView)view.findViewById(R.id.recNews_theme);//标题
intro=(TextView)view.findViewById(R.id.recNews_intro);//内容
visNum=(TextView)view.findViewById(R.id.recNews_visNum);//浏览量
time=(TextView)view.findViewById(R.id.recNews_time);//时间
linear=(LinearLayout)view.findViewById(R.id.news);
}
}
public NewsAdapter(List<News> newsList){
mNewsList=newsList;
Log.e("recAdapter中mNewsList的数据",String.valueOf(newsList));
}
public NewsAdapter(){
}
public void setRecnewsList(List<News> newsList){
mNewsList=newsList;
}
@Override
public NewsAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.recnews_item,parent,false);
//NewsAdapter.ViewHolder holder=new NewsAdapter.ViewHolder(view);
final ViewHolder holder=new ViewHolder(view);
holder.linear.setOnClickListener(new View.OnClickListener() {//注册资讯子项的监听器,用匿名类来实现点击事件的方法
@Override
public void onClick(View view) {
UpdateNewsBrowseNum(holder.text_news_id.getText().toString());//更新资讯浏览量
Intent intent=new Intent(view.getContext(), NewsDetailActivity.class);//去资讯详情页
intent.putExtra("nid",Integer.parseInt(holder.text_news_id.getText().toString()));
Log.e("传输前的nid",(holder.text_news_id.getText().toString()));
intent.putExtra("type",1);//资讯类型是1
intent.putExtra("nTitle",(holder.theme.getText().toString()));
intent.putExtra("nContent",(holder.intro.getText().toString()));
intent.putExtra("nBrowseNum",String.valueOf(Integer.parseInt(holder.visNum.getText().toString())+1 ));//传过去之前浏览量+1
// Log.e("传输前的资讯标题是",holder.theme.getText().toString());
// updateNewsBrowse(newsid);
// intent.putExtra("from",String.valueOf(view.getContext()));
// intent.putExtra("nid",news);//
// intent.putExtra("type",3);//资讯类型是3暂时未用
// EventBus.getDefault().postSticky(news);//发送Stricky事件
// Log.e("坐Evenbus的news",String.valueOf(news.getStittle()));
// if(news!=null)
// Log.i("newsAapter","news is not null");
// else
// Log.i("newsAapter","news is null");
Log.e("activity",String.valueOf(view.getContext()));
view.getContext().startActivity(intent);
}
});
return holder;
}
@Override
public void onBindViewHolder(@NonNull NewsAdapter.ViewHolder holder, int position) {
//将每个子项holder绑定了数据
news=mNewsList.get(position);
holder.text_news_id.setText(String.valueOf(news.getNid()));//新增的
holder.image.setImageResource(R.drawable.rec_news3);
holder.visNum.setText(String.valueOf(news.getSbrowseNum()));
holder.intro.setText(news.getScontent());
holder.theme.setText(news.getStittle());
holder.time.setText( String.valueOf(news.getStime() ));
//holder.time.setText(news.getTime());
}
private void UpdateNewsBrowseNum(String nid){
final String url = BaseActivity.SERVER_URL + "/browse-servlet?action=UpdateBrowse";
final Map<String,String> paramMap = new HashMap<String,String>();
Log.e("获取浏览量的返回结果","浏览量");
paramMap.put("id", nid);//把资讯编号nid放进去
//登录后需要将uid换为这部分
// paramMap.put("uid", String.valueOf(BaseActivity.owner.getNetId()));
paramMap.put("uid", String.valueOf(1));//现假设都是用户1操作
// 只对资讯进行更新资讯的类型是1
paramMap.put("type", String.valueOf(1));
new Thread(new Runnable() {
@Override
public void run() {
Log.e("获取浏览量的返回结果uid",String.valueOf(1));
String jsonStr = OkHttpUtil.synPost(url,paramMap);
Log.e("浏览量的返回结果",jsonStr);
}
}).start();
}
// private void updateNewsBrowse(int nid){
// new Thread(new Runnable() {
// @Override
// public void run() {
// try{
// String url = BaseActivity.SERVER_URL + "/news-servlet?action=update-nBrowse";
// OkHttpUtil.synGet(url); //同步的Get
//
// }catch (Exception e){
// e.printStackTrace();
// }
// }
// }).start();
// }
@Override
public int getItemCount() {
return mNewsList.size();
}
}

@ -1,55 +1,96 @@
package com.example.leudaemialikeme.Adapter;
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Activity.BaseActivity;
import com.example.leudaemialikeme.Activity.LoginActivity;
import com.example.leudaemialikeme.Activity.QuestionDetailActivity;
import com.example.leudaemialikeme.Model.Question;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.OkHttpUtil;
import com.example.leudaemialikeme.Utils.TimeUtil;
import java.util.List;
public class QuestionAdapter extends RecyclerView.Adapter<QuestionAdapter.ViewHolder>{
private List<Question> questionList;
private Context context;
//重写构造方法
public QuestionAdapter(List<Question> questionList){
public QuestionAdapter(List<Question> questionList, Context context){
this.questionList = questionList;
this.context = context;
}
public QuestionAdapter(){
}
public int getItemCount(){
return questionList.size();
}
//内部类
static class ViewHolder extends RecyclerView.ViewHolder {
TextView questionInfo,questionRead,questionTime;
LinearLayout questionMore;
private TextView questionId, questiontitle,questionInfo,questionRead,questionTime;
public ViewHolder(@NonNull View itemView){
super(itemView);
this.questionId = itemView.findViewById(R.id.question_id);
this.questiontitle = itemView.findViewById(R.id.questionTitle);
this.questionInfo = (TextView)itemView.findViewById(R.id.questionInfo);
this.questionRead = (TextView)itemView.findViewById(R.id.questionRead);
this.questionTime = (TextView)itemView.findViewById(R.id.questionTime);
this.questionMore = (LinearLayout) itemView.findViewById(R.id.questionMore);
}
}
public void setQuestionList(List<Question> questionList){
this.questionList=questionList;
}
//重写 onCreateViewHolder()方法
@Override
public QuestionAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.question_item,parent,false);
QuestionAdapter.ViewHolder holder=new QuestionAdapter.ViewHolder(view);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int qid = Integer.parseInt(holder.questionId.getText().toString());
addQuestionBrowse(qid);
Intent intent = new Intent(context, QuestionDetailActivity.class);
intent.putExtra("qid", qid);
context.startActivity(intent);
}
});
return holder;
}
private void addQuestionBrowse(int qid) {
new Thread(new Runnable() {
@Override
public void run() {
try{
String url = LoginActivity.SERVER_URL+"/main-servlet?action=addQuestionBrowse&qid="+qid+"&iduser="+ BaseActivity.owner.getNetId();
OkHttpUtil.synGet(url);
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
//重写onBindViewHolder()方法
@Override
public void onBindViewHolder(@NonNull QuestionAdapter.ViewHolder holder, int position){
Question question = questionList.get(position);
holder.questionInfo.setText(question.getQuestionInfo());
holder.questionRead.setText(question.getQuestionRead());
holder.questionTime.setText(question.getQuestionTime());
holder.questionId.setText(String.valueOf(question.getQid()));
holder.questiontitle.setText(question.getQtittle());
holder.questionInfo.setText(question.getQcontent());
holder.questionRead.setText(String.valueOf(question.getQbrowseNum()));
holder.questionTime.setText(TimeUtil.timeToString(question.getQtime()));
}
}

@ -0,0 +1,57 @@
package com.example.leudaemialikeme.Adapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Model.AnswerItemView;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.TimeUtil;
import java.util.ArrayList;
import java.util.List;
public class QuestionDetailAdapter extends RecyclerView.Adapter<QuestionDetailAdapter.ViewHolder>{
List<AnswerItemView> answerList = new ArrayList<>();
public QuestionDetailAdapter(List<AnswerItemView> answerList){
this.answerList = answerList;
}
static class ViewHolder extends RecyclerView.ViewHolder {
private TextView text_answer_username;
private TextView text_answer_content;
private TextView text_answer_time;
public ViewHolder(@NonNull View itemView) {
super(itemView);
text_answer_username = itemView.findViewById(R.id.text_answer_username);
text_answer_content = itemView.findViewById(R.id.text_answer_content);
text_answer_time = itemView.findViewById(R.id.text_answer_time);
}
}
@NonNull
@Override
public QuestionDetailAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.answer_item,parent,false);
QuestionDetailAdapter.ViewHolder holder = new QuestionDetailAdapter.ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull QuestionDetailAdapter.ViewHolder holder, int position) {
AnswerItemView answer = answerList.get(position);
holder.text_answer_username.setText(answer.getAnswerAuthor());
holder.text_answer_content.setText(answer.getAnswerContent());
holder.text_answer_time.setText(TimeUtil.timeToString(answer.getAnswerTime()));
}
@Override
public int getItemCount() {
return answerList.size();
}
}

@ -12,7 +12,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Activity.DetailActivity;
import com.example.leudaemialikeme.Activity.BlogDetailActivity;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Model.Recnews;
@ -52,7 +52,7 @@ public class RecnewsAdapter extends RecyclerView.Adapter<RecnewsAdapter.ViewHold
holder.linear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(view.getContext(), DetailActivity.class);
Intent intent=new Intent(view.getContext(), BlogDetailActivity.class);
intent.putExtra("from",String.valueOf(view.getContext()));
Log.e("activity",String.valueOf(view.getContext()));
view.getContext().startActivity(intent);
@ -65,11 +65,11 @@ public class RecnewsAdapter extends RecyclerView.Adapter<RecnewsAdapter.ViewHold
@Override
public void onBindViewHolder(@NonNull RecnewsAdapter.ViewHolder holder, int position) {
Recnews recnews=mRecnewsList.get(position);
holder.image.setImageResource(recnews.getImageNum());
holder.visNum.setText(String.valueOf(recnews.getVisNum()));
holder.intro.setText(recnews.getIntro());
holder.theme.setText(recnews.getTheme());
holder.time.setText(recnews.getTime());
holder.time.setText(recnews.getTime().substring(0,17));
}
@Override

@ -0,0 +1,176 @@
package com.example.leudaemialikeme.Adapter;
import android.annotation.SuppressLint;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CompoundButton;
import android.widget.LinearLayout;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.CallAlarm;
import com.example.leudaemialikeme.ClockDetail;
import com.example.leudaemialikeme.Model.Clock;
import com.example.leudaemialikeme.R;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import static android.content.Context.ALARM_SERVICE;
public class TimeAdapter extends RecyclerView.Adapter<TimeAdapter.ViewHolder> {
List<Clock> list;
LayoutInflater layoutInflater;
Context context;
Calendar calendar = Calendar.getInstance();
public static int pos;
public TimeAdapter(List<Clock> list, Context context) {
this.list = list;
this.context = context;
layoutInflater = LayoutInflater.from(context);
}
@Override
public TimeAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = layoutInflater.inflate(R.layout.list_item, null);
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
}
@SuppressLint({"ResourceAsColor", "SetTextI18n"})
@Override
public void onBindViewHolder(@NonNull final TimeAdapter.ViewHolder viewHolder, final int i) {
final Clock clock = list.get(i);
System.out.println(i+"闹钟的位置");
pos = i;
Log.e("i=======",i+" "+clock.getClockType());
if (clock.getClockType() == Clock.clock_open){
viewHolder.aSwitch.setChecked(true);
viewHolder.hour.setTextColor(context.getResources().getColor(R.color.colorBlack));
viewHolder.minute.setTextColor(context.getResources().getColor(R.color.colorBlack));
viewHolder.net.setTextColor(context.getResources().getColor(R.color.colorBlack));
viewHolder.content_name.setTextColor(context.getResources().getColor(R.color.colorBlack));
viewHolder.content_dosage.setTextColor(context.getResources().getColor(R.color.colorBlack));
}else if (clock.getClockType() == Clock.clock_close){
viewHolder.aSwitch.setChecked(false);
viewHolder.hour.setTextColor(context.getResources().getColor(R.color.colorGray));
viewHolder.minute.setTextColor(context.getResources().getColor(R.color.colorGray));
viewHolder.net.setTextColor(context.getResources().getColor(R.color.colorGray));
viewHolder.content_name.setTextColor(context.getResources().getColor(R.color.colorGray));
viewHolder.content_dosage.setTextColor(context.getResources().getColor(R.color.colorGray));
}
viewHolder.hour.setText(clock.getHour()+"");
viewHolder.minute.setText(clock.getMinute()+"");
viewHolder.content_name.setText(clock.getName());
viewHolder.content_dosage.setText(clock.getDosage());
viewHolder.todetail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e("TODETAIL",clock.getClockType()+"");
Intent intent = new Intent(context, ClockDetail.class);
intent.putExtra("position", i);
context.startActivity(intent);
}
});
viewHolder.aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@SuppressLint("ResourceAsColor")
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
clock.setClockType(Clock.clock_open);
//clock.updateAll();
clock.save();
Toast.makeText(context, "开启闹钟", Toast.LENGTH_SHORT).show();
viewHolder.hour.setTextColor(context.getResources().getColor(R.color.colorBlack));
viewHolder.minute.setTextColor(context.getResources().getColor(R.color.colorBlack));
viewHolder.net.setTextColor(context.getResources().getColor(R.color.colorBlack));
viewHolder.content_name.setTextColor(context.getResources().getColor(R.color.colorBlack));
viewHolder.content_dosage.setTextColor(context.getResources().getColor(R.color.colorBlack));
Intent intent = new Intent(context, CallAlarm.class);
PendingIntent sender = PendingIntent.getBroadcast(
context, 0, intent, 0);
AlarmManager am;
am = (AlarmManager) context.getSystemService(ALARM_SERVICE);
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(clock.getHour()));
calendar.set(Calendar.MINUTE, Integer.parseInt(clock.getMinute()));
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Log.e("TAG",calendar.getTimeInMillis()+"");
Log.e("TAG",System.currentTimeMillis()+"");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
if (System.currentTimeMillis()>calendar.getTimeInMillis()+40000){
//加24小时
am.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis()+86400000, sender);
}else {
am.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
}
}
} else if (!isChecked){
clock.setClockType(Clock.clock_close);
//clock.updateAll();
clock.save();
Log.e("status------",clock.getHour()+clock.getMinute()+clock.getMinute()+clock.getClockType()+"");
Log.e("关闭闹钟",clock.getClockType()+"");
Intent intent = new Intent(context, CallAlarm.class);
PendingIntent sender=PendingIntent.getBroadcast(
context,0, intent, 0);
AlarmManager am;
am =(AlarmManager)context.getSystemService(ALARM_SERVICE);
am.cancel(sender);
Toast.makeText(context, "关闭闹钟", Toast.LENGTH_SHORT).show();
viewHolder.hour.setTextColor(context.getResources().getColor(R.color.colorGray));
viewHolder.minute.setTextColor(context.getResources().getColor(R.color.colorGray));
viewHolder.net.setTextColor(context.getResources().getColor(R.color.colorGray));
viewHolder.content_name.setTextColor(context.getResources().getColor(R.color.colorGray));
viewHolder.content_dosage.setTextColor(context.getResources().getColor(R.color.colorGray));
}
}
});
}
@Override
public int getItemCount() {
return list.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView hour;
TextView minute;
TextView content_name,content_dosage;
TextView net;
Switch aSwitch;
LinearLayout todetail;
public ViewHolder(@NonNull View itemView) {
super(itemView);
hour = itemView.findViewById(R.id.hour);
minute = itemView.findViewById(R.id.minute);
net = itemView.findViewById(R.id.net);
content_name = itemView.findViewById(R.id.content_name);
content_dosage = itemView.findViewById(R.id.content_dosage);
aSwitch = itemView.findViewById(R.id.switch_control);
todetail = itemView.findViewById(R.id.todetail);
}
}
}

@ -0,0 +1,22 @@
package com.example.leudaemialikeme;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import com.example.leudaemialikeme.Activity.AlarmAlert;
public class CallAlarm extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent intent1 = new Intent(context, AlarmAlert.class);
Bundle bundle = new Bundle();
//String content = intent.getStringExtra("content");
//Log.e("content===sadsad",content);
bundle.putString("STR_CALLER","");
intent1.putExtras(bundle);
intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent1);
}
}

@ -0,0 +1,174 @@
package com.example.leudaemialikeme;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;
import com.example.leudaemialikeme.Model.Clock;
import java.util.Calendar;
import static com.example.leudaemialikeme.Activity.MdctRmdActivity.list;
import static com.example.leudaemialikeme.Activity.MdctRmdActivity.timeAdapter;
public class ClockDetail extends Activity implements View.OnClickListener{
private Calendar calendar;
private TextView show_hour;
private TextView show_minute;
private EditText content_name;
private EditText content_dosage;
private ImageView back;
private TextView title;
private Button set;
private Button save;
private Button delete;
Clock clock;
int position;
String hourformat;
String minuteformat;
Context context = ClockDetail.this;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_clock_detail);
show_hour = findViewById(R.id.hour);
show_minute = findViewById(R.id.minute);
content_name = findViewById(R.id.content_name);
content_dosage = findViewById(R.id.content_dosage);
set = findViewById(R.id.set_time);
set.setOnClickListener(this);
save = findViewById(R.id.save);
save.setOnClickListener(this);
delete = findViewById(R.id.delete);
delete.setOnClickListener(this);
back = findViewById(R.id.back_list_clock);
back.setOnClickListener(this);
back.setImageResource(R.drawable.ic_back);
title = findViewById(R.id.title);
title.setText("服药提醒详情");
calendar = Calendar.getInstance();
initView();
}
@SuppressLint("SetTextI18n")
private void initView() {
position = getIntent().getIntExtra("position", -1);
clock = list.get(position);
Log.e("position", position + "");
if (clock.getHour() != null && clock.getMinute() != null) {
hourformat = formatString(clock.getHour());
minuteformat = formatString(clock.getMinute());
}
content_name.setText(clock.getName());
content_dosage.setText(clock.getDosage());
show_hour.setText(clock.getHour() + "");
show_minute.setText(clock.getMinute() + "");
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.set_time:
calendar.setTimeInMillis(System.currentTimeMillis());
int mhour = calendar.get(Calendar.HOUR_OF_DAY);
int mminute = calendar.get(Calendar.MINUTE);
new TimePickerDialog(ClockDetail.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
//calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
hourformat = format(hourOfDay);
minuteformat = format(minute);
Toast.makeText(ClockDetail.this, "" + hourformat + ":" + minuteformat, Toast.LENGTH_SHORT).show();
show_hour.setText(hourformat);
show_minute.setText(minuteformat);
}
}, mhour, mminute, true).show();
break;
case R.id.save:
clock.setHour(hourformat);
clock.setMinute(minuteformat);
clock.setName("" + content_name.getText().toString());
clock.setDosage("" + content_dosage.getText().toString());
clock.setClockType(Clock.clock_open);
clock.save();
Intent intent = new Intent(ClockDetail.this, CallAlarm.class);
// intent.putExtra("content",clock.getContent());
//sendBroadcast(intent);
PendingIntent sender = PendingIntent.getBroadcast(
ClockDetail.this, 0, intent, 0);
AlarmManager am;
am = (AlarmManager) getSystemService(ALARM_SERVICE);
Log.e("gethour",clock.getHour());
Log.e("gethour",clock.getMinute());
calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(clock.getHour()));
calendar.set(Calendar.MINUTE, Integer.parseInt(clock.getMinute()));
Log.e("TAG",calendar.getTimeInMillis()+"");
Log.e("TAG",System.currentTimeMillis()+"");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
if (System.currentTimeMillis()>calendar.getTimeInMillis()+60000){
//加24小时
am.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis()+86400000, sender);
}else {
am.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
}
}
timeAdapter.notifyDataSetChanged();
finish();
break;
case R.id.delete:
clock.delete();
timeAdapter.notifyDataSetChanged();
Intent intent1 = new Intent(context, CallAlarm.class);
PendingIntent sender1=PendingIntent.getBroadcast(
context,0, intent1, 0);
am =(AlarmManager)context.getSystemService(ALARM_SERVICE);
am.cancel(sender1);
finish();
break;
case R.id.back_list_clock:
finish();
break;
}
}
private String format(int x) {
String s = "" + x;
if (s.length() == 1) {
s = "0" + s;
}
return s;
}
private String formatString(String x) {
String s = x;
if (s.length() == 1) {
s = "0" + s;
}
return s;
}
}

@ -0,0 +1,43 @@
package com.example.leudaemialikeme.Dao;
import com.example.leudaemialikeme.Model.Friend;
import org.litepal.LitePal;
import java.util.ArrayList;
public class FriendDao extends BaseDao{
public ArrayList<Friend> findFriendListByOwnerNetId(int ownerNetId){
ArrayList<Friend> friendList=(ArrayList<Friend>)LitePal.where("ownerNetId = ?", String.valueOf(ownerNetId)).find(Friend.class);
return friendList;
}
public ArrayList<Friend> findChatFriendList(int ownerNetId){
ArrayList<Friend> friendList=(ArrayList<Friend>)LitePal.where("ownerNetId = ? AND isChat = ?", String.valueOf(ownerNetId),"1").find(Friend.class);
return friendList;
}
public Friend findByNetId(int netId,int ownerNetId){
ArrayList<Friend> friendList=(ArrayList<Friend>)LitePal.where("netId = ? and ownerNetId = ?", String.valueOf(netId),String.valueOf(ownerNetId)).find(Friend.class);
if (friendList.size()==0){
return null;
}
return friendList.get(0);
}
public void changeChatStatus(Friend friend, int netId, int ownerNetId){
friend.updateAll("netId = ? and ownerNetId = ?",String.valueOf(netId),String.valueOf(ownerNetId));
}
// public ArrayList<Friend> findByKeyword(String keyword,int ownerNetId){
// String keywordCop="%"+keyword+"%";
// ArrayList<Friend> friends=(ArrayList<Friend>) LitePal.where("name like ? AND isfriend=1 AND ownerNetId=?",keywordCop,String.valueOf(ownerNetId)).find(Friend.class);
// return friends;
// }
// public ArrayList<Friend> findNewFriendList(int ownerNetId){
// ArrayList<Friend> friendList=(ArrayList<Friend>)LitePal.where("ownerNetId = ? AND isfriend=0", String.valueOf(ownerNetId)).find(Friend.class);
// return friendList;
// }
}

@ -2,6 +2,7 @@ package com.example.leudaemialikeme.Dao;
import android.database.Cursor;
import android.util.Log;
import com.example.leudaemialikeme.Model.Message;
import com.example.leudaemialikeme.Utils.DBUtil;
@ -39,6 +40,7 @@ public class MessageDao extends BaseDao {
ArrayList<Message> messages=DBUtil.cursorToList(cursor,Message.class);
if (messages.size()==0){
Log.d("MessageDao","findUnReadMessage无未读消息");
return null;
}else {
return messages;

@ -0,0 +1,160 @@
package com.example.leudaemialikeme.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Activity.BaseActivity;
import com.example.leudaemialikeme.Adapter.MyAnswerAdapter;
import com.example.leudaemialikeme.Adapter.MyBlogAdapter;
import com.example.leudaemialikeme.Model.Blog;
import com.example.leudaemialikeme.Model.MyAnswerItemView;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.OkHttpUtil;
import com.example.leudaemialikeme.Utils.TimeUtil;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
public class APNChannelFragment extends Fragment {
private static final String ARG_CATEGORY_TITLE = "category_title";
private String APNCategoryTitle = "Default";
private List<MyAnswerItemView> answerList = new ArrayList<>();
private List<Blog> blogList = new ArrayList<>();
private RecyclerView answerRecyclerview;
private RecyclerView blogRecyclerview;
public APNChannelFragment() {
// Required empty public constructor
}
public static APNChannelFragment newInstance(String APNCategoryTitle) {
APNChannelFragment fragment = new APNChannelFragment();
Bundle args = new Bundle();
args.putString(ARG_CATEGORY_TITLE, APNCategoryTitle);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
APNCategoryTitle = getArguments().getString(ARG_CATEGORY_TITLE);
} catch (java.lang.NullPointerException e) {
System.out.println("TesFragment getArg error!");
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view;
if (APNCategoryTitle.equals("回答")) {
view = inflater.inflate(R.layout.recyclerview, container, false);
answerRecyclerview = view.findViewById(R.id.list_community);
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
answerRecyclerview.setLayoutManager(layoutManager);
MyAnswerAdapter adapter = new MyAnswerAdapter(answerList, getContext());
answerRecyclerview.setAdapter(adapter);
getMyAnswerList();
} else if (APNCategoryTitle.equals("帖子")) {
view = inflater.inflate(R.layout.recyclerview, container, false);
blogRecyclerview = view.findViewById(R.id.list_community);
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
blogRecyclerview.setLayoutManager(layoutManager);
MyBlogAdapter adapter = new MyBlogAdapter(blogList);
blogRecyclerview.setAdapter(adapter);
getMyBlogList();
} else {
view = inflater.inflate(R.layout.fragment_a_p_n_channel, container, false);
}
return view;
}
private void getMyBlogList() {
new Thread(new Runnable() {
@Override
public void run() {
try{
String url = BaseActivity.SERVER_URL+"/my-servlet?action=getMyBlogList&iduser="+BaseActivity.owner.getNetId();
OkHttpUtil.asyGet(url, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String jsonStr = response.body().string();
Gson gson = new Gson();
final List<Blog> blogList = gson.fromJson(jsonStr, new TypeToken<List<Blog>>() {}.getType());
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
MyBlogAdapter adapter = new MyBlogAdapter(blogList);
blogRecyclerview.setAdapter(adapter);
}
});
}
});
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
private void getMyAnswerList() {
new Thread(new Runnable() {
@Override
public void run() {
try{
String url = BaseActivity.SERVER_URL+"/my-servlet?action=getMyAnswerList&iduser="+BaseActivity.owner.getNetId();
OkHttpUtil.asyGet(url, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String jsonStr = response.body().string();
Gson gson = new Gson();
List<Map<String,String>> list = gson.fromJson(jsonStr, new TypeToken<List<Map<String, String>>>() {}.getType());
for(int i=0; i<list.size(); i++){
Map<String, String> jsonMap = list.get(i);
MyAnswerItemView myAnswerItemView = new MyAnswerItemView();
myAnswerItemView.setQid(Integer.parseInt(jsonMap.get("qid")));
myAnswerItemView.setQtitle(jsonMap.get("qtitle"));
myAnswerItemView.setAcontent(jsonMap.get("content"));
myAnswerItemView.setAnswerTime(TimeUtil.stringToTime(jsonMap.get("answerTime")));
answerList.add(myAnswerItemView);
}
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
MyAnswerAdapter adapter = new MyAnswerAdapter(answerList, getContext());
answerRecyclerview.setAdapter(adapter);
}
});
}
});
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
}

@ -1,110 +0,0 @@
package com.example.leudaemialikeme.Fragment;
import android.os.Bundle;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.example.leudaemialikeme.Adapter.CollectAdapter;
import com.example.leudaemialikeme.Model.Collect;
import com.example.leudaemialikeme.R;
import java.util.ArrayList;
import java.util.List;
/**
* A simple {@link Fragment} subclass.
* Activities that contain this fragment must implement the
* to handle interaction events.
* Use the {@link AnswerCollectFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class AnswerCollectFragment extends Fragment {
private static final String ARG_CATEGORY_TITLE = "category_title";
private String collectCategoryTitle = "Default";
private List<Collect> collectList = new ArrayList<>();
private SwipeRefreshLayout mSwipeRefreshLayout;
public AnswerCollectFragment() {
// Required empty public constructor
}
public static AnswerCollectFragment newInstance(String collectCategoryTitle) {
Bundle args = new Bundle();
args.putString(ARG_CATEGORY_TITLE, collectCategoryTitle);
AnswerCollectFragment fragment = new AnswerCollectFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
collectCategoryTitle = (String) getArguments().getString(ARG_CATEGORY_TITLE);
}catch (java.lang.NullPointerException e)
{
System.out.println("TestFragment getArg error!");
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_answer_collect, container, false);
getData();//获得数据
RecyclerView recycleView = (RecyclerView) view.findViewById(R.id.APNList);//获得视图
LinearLayoutManager layoutManager;
layoutManager = new LinearLayoutManager(getActivity());
recycleView.setLayoutManager(layoutManager);//建立线性布局
final CollectAdapter adapter = new CollectAdapter(collectList);//创建适配器
recycleView.setItemAnimator(new DefaultItemAnimator());//设置动画效果
recycleView.setAdapter(adapter);
mSwipeRefreshLayout = view.findViewById(R.id.refresh_layout);
// mTextView = view.findViewById(R.id.tv_pull_down_refresh);
handleDownPullUpdate();
return view;
}
private void handleDownPullUpdate() {
mSwipeRefreshLayout.setEnabled(true);
mSwipeRefreshLayout.setColorSchemeResources(R.color.colorAccent,R.color.colorPrimary,R.color.light_grey);
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
//不再显示提示正在刷新和刷新成功
// mTextView.setText("正在刷新...");
//被刷新时的操作
//更新UI
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//更新成功后设置UI停止更新
// mTextView.setText("刷新成功!!!");
mSwipeRefreshLayout.setRefreshing(false);
}
},3000);
}
});
}
private void getData() {
Collect collect1 = new Collect("临时的测算", R.mipmap.img_my_person, "病因很重要", "加油加油"
, R.mipmap.img_search, "12浏览");
collectList.add(collect1);
Collect collect2 = new Collect("临时的测算", R.mipmap.img_my_person, "病因很重要", "加油加油"
, R.mipmap.img_search, "12浏览");
collectList.add(collect2);
}
}

@ -0,0 +1,166 @@
package com.example.leudaemialikeme.Fragment;
import android.os.Bundle;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.example.leudaemialikeme.Activity.BaseActivity;
import com.example.leudaemialikeme.Activity.MainActivity;
import com.example.leudaemialikeme.Adapter.CollectBlogAdapter;
import com.example.leudaemialikeme.Model.Blog;
import com.example.leudaemialikeme.Model.News;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.OkHttpUtil;
import com.example.leudaemialikeme.Utils.TimeUtil;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.IOException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
/**
* A simple {@link Fragment} subclass.
* Activities that contain this fragment must implement the
* to handle interaction events.
* Use the {@link BlogCollectFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class BlogCollectFragment extends Fragment {
private static final String ARG_CATEGORY_TITLE = "category_title";
private String collectCategoryTitle = "Default";
private List<Blog> collectList = new ArrayList<>();
private RecyclerView blogCollectrecycleView;
private SwipeRefreshLayout mSwipeRefreshLayout;
public BlogCollectFragment() {
// Required empty public constructor
}
public static BlogCollectFragment newInstance(String collectCategoryTitle) {
Bundle args = new Bundle();
args.putString(ARG_CATEGORY_TITLE, collectCategoryTitle);
BlogCollectFragment fragment = new BlogCollectFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
collectCategoryTitle = (String) getArguments().getString(ARG_CATEGORY_TITLE);
}catch (java.lang.NullPointerException e)
{
System.out.println("TestFragment getArg error!");
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_blog_collect, container, false);
getData();//获得数据
blogCollectrecycleView = (RecyclerView) view.findViewById(R.id.blogCollectList);//获得视图
LinearLayoutManager layoutManager;
layoutManager = new LinearLayoutManager(getActivity());
blogCollectrecycleView.setLayoutManager(layoutManager);//建立线性布局
final CollectBlogAdapter adapter = new CollectBlogAdapter(collectList);//创建适配器
blogCollectrecycleView.setItemAnimator(new DefaultItemAnimator());//设置动画效果
blogCollectrecycleView.setAdapter(adapter);
mSwipeRefreshLayout = view.findViewById(R.id.refresh_layout);
// mTextView = view.findViewById(R.id.tv_pull_down_refresh);
handleDownPullUpdate();
return view;
}
private void handleDownPullUpdate() {
mSwipeRefreshLayout.setEnabled(true);
mSwipeRefreshLayout.setColorSchemeResources(R.color.colorAccent,R.color.colorPrimary,R.color.light_grey);
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
//不再显示提示正在刷新和刷新成功
// mTextView.setText("正在刷新...");
//被刷新时的操作
//更新UI
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//更新成功后设置UI停止更新
// mTextView.setText("刷新成功!!!");
mSwipeRefreshLayout.setRefreshing(false);
}
},3000);
}
});
}
private void getData() {
// Blog collect1 = new Blog(1,1,"2","临时测试博客版","博客内容", TimeUtil.stringToTime("2022-01-07 12:12:12"),1,1,1,0);
// collectList.add(collect1);
// Blog collect2 = new Blog(1,1,"2","临时测试博客版2","博客内容", TimeUtil.stringToTime("2022-01-07 12:12:12"),1,1,5,0);
// collectList.add(collect2);
new Thread(new Runnable() {
@Override
public void run() {
try{
String url = MainActivity.SERVER_URL+"/my-servlet?action=collectBlog&uid="+ BaseActivity.owner.getNetId()+"&type="+2;
Callback callback = new Callback() {
@Override
public void onFailure(Call call, IOException e) {
System.out.println("-----ERROR----");
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String jsonStr = response.body().string();
Gson gson = new Gson();
Map<String, String> jsonMap= gson.fromJson(jsonStr, new TypeToken<Map<String, String>>() {}.getType());
final String message=(String) jsonMap.get("message");
if (message.equals("success")) {
List<Blog> blogList = gson.fromJson(jsonMap.get("blogList"), new TypeToken <List<Blog>>(){}.getType());
for(int i=0;i<blogList.size();i++){
Blog startBlog = blogList.get(i);
int bid = startBlog.getBid();
int uid = startBlog.getUid();
String btype = startBlog.getBtype();
String btittle = startBlog.getBtittle();
String bcontent = startBlog.getBcontent();
Timestamp btime = startBlog.getBtime();
int blikeNum = startBlog.getBlikeNum();
int bcollectNum = startBlog.getBcollectNum();
int bbrowse = startBlog.getBbrowse();
int flag = startBlog.getFlag();
Blog endBlog = new Blog(bid,uid,btype,btittle,bcontent,btime,blikeNum,bcollectNum,bbrowse,flag);
collectList.add(endBlog);
}
}
}
};
OkHttpUtil.asyGet(url,callback);
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
}

@ -0,0 +1,167 @@
package com.example.leudaemialikeme.Fragment;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.leudaemialikeme.Activity.BaseActivity;
import com.example.leudaemialikeme.Activity.MainActivity;
import com.example.leudaemialikeme.Adapter.HistoryBlogAdapter;
import com.example.leudaemialikeme.Model.Blog;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.OkHttpUtil;
import com.example.leudaemialikeme.Utils.TimeUtil;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.IOException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
/**
* A simple {@link Fragment} subclass.
* Activities that contain this fragment must implement the
* to handle interaction events.
* Use the {@link BlogHistoryFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class BlogHistoryFragment extends Fragment {
private static final String ARG_CATEGORY_TITLE = "category_title";
private String collectCategoryTitle = "Default";
private List<Blog> collectList = new ArrayList<>();
private SwipeRefreshLayout mSwipeRefreshLayout;
public BlogHistoryFragment() {
// Required empty public constructor
}
public static BlogHistoryFragment newInstance(String collectCategoryTitle) {
Bundle args = new Bundle();
args.putString(ARG_CATEGORY_TITLE, collectCategoryTitle);
BlogHistoryFragment fragment = new BlogHistoryFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
collectCategoryTitle = (String) getArguments().getString(ARG_CATEGORY_TITLE);
}catch (java.lang.NullPointerException e)
{
System.out.println("TestFragment getArg error!");
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_blog_history, container, false);
getData();//获得数据
RecyclerView recycleView = (RecyclerView) view.findViewById(R.id.blogHistoryList);//获得视图
LinearLayoutManager layoutManager;
layoutManager = new LinearLayoutManager(getActivity());
recycleView.setLayoutManager(layoutManager);//建立线性布局
final HistoryBlogAdapter adapter = new HistoryBlogAdapter(collectList);//创建适配器
recycleView.setItemAnimator(new DefaultItemAnimator());//设置动画效果
recycleView.setAdapter(adapter);
mSwipeRefreshLayout = view.findViewById(R.id.refresh_layout);
// mTextView = view.findViewById(R.id.tv_pull_down_refresh);
handleDownPullUpdate();
return view;
}
private void handleDownPullUpdate() {
mSwipeRefreshLayout.setEnabled(true);
mSwipeRefreshLayout.setColorSchemeResources(R.color.colorAccent,R.color.colorPrimary,R.color.light_grey);
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
//不再显示提示正在刷新和刷新成功
// mTextView.setText("正在刷新...");
//被刷新时的操作
//更新UI
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//更新成功后设置UI停止更新
// mTextView.setText("刷新成功!!!");
mSwipeRefreshLayout.setRefreshing(false);
}
},3000);
}
});
}
private void getData() {
// Blog collect1 = new Blog(1,1,"2","测试博客浏览版","博客内容", TimeUtil.stringToTime("2022-01-07 12:12:12"),1,1,1,0);
// collectList.add(collect1);
// Blog collect2 = new Blog(1,1,"2","测试博客浏览版2","博客内容", TimeUtil.stringToTime("2022-01-07 12:12:12"),1,1,5,0);
// collectList.add(collect2);
new Thread(new Runnable() {
@Override
public void run() {
try{
String url = MainActivity.SERVER_URL+"/my-servlet?action=historyBlog&uid="+ BaseActivity.owner.getNetId()+"&type="+2;
Callback callback = new Callback() {
@Override
public void onFailure(Call call, IOException e) {
System.out.println("-----ERROR----");
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String jsonStr = response.body().string();
Gson gson = new Gson();
Map<String, String> jsonMap= gson.fromJson(jsonStr, new TypeToken<Map<String, String>>() {}.getType());
final String message=(String) jsonMap.get("message");
if (message.equals("success")) {
List<Blog> blogList = gson.fromJson(jsonMap.get("blogList"), new TypeToken <List<Blog>>(){}.getType());
for(int i=0;i<blogList.size();i++){
Blog startBlog = blogList.get(i);
int bid = startBlog.getBid();
int uid = startBlog.getUid();
String btype = startBlog.getBtype();
String btittle = startBlog.getBtittle();
String bcontent = startBlog.getBcontent();
Timestamp btime = startBlog.getBtime();
int blikeNum = startBlog.getBlikeNum();
int bcollectNum = startBlog.getBcollectNum();
int bbrowse = startBlog.getBbrowse();
int flag = startBlog.getFlag();
Blog endBlog = new Blog(bid,uid,btype,btittle,bcontent,btime,blikeNum,bcollectNum,bbrowse,flag);
collectList.add(endBlog);
}
}
}
};
OkHttpUtil.asyGet(url,callback);
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
}

@ -1,22 +1,20 @@
package com.example.leudaemialikeme.Fragment;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.viewpager.widget.ViewPager;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.HorizontalScrollView;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.viewpager.widget.ViewPager;
import com.example.leudaemialikeme.Adapter.CollectPageFragmentAdapter;
import com.example.leudaemialikeme.R;
@ -32,11 +30,12 @@ public class CollectFragment extends Fragment implements ViewPager.OnPageChangeL
private ViewPager viewPager; //内导航的碎片的容器
private RadioGroup rgChannelCollect=null; // 内导航由单选按钮组构成
private HorizontalScrollView hvChannelCollect=null; //单选按钮组可滚动动
private String[] channelList = {" 资讯 "," 回答与文章 ",
private String[] channelList = {" 资讯 "," 帖子 ",
}; //默认的内导航栏目
private CollectPageFragmentAdapter adapter; //viewPager 的适配器
private TextView Name;
private String title;
private ImageView back_collect;
public CollectFragment() {
// Required empty public constructor
@ -51,6 +50,7 @@ public class CollectFragment extends Fragment implements ViewPager.OnPageChangeL
Bundle savedInstanceState) {
if(view==null){
view=inflater.inflate(R.layout.fragment_collect, container, false);
back_collect = view.findViewById(R.id.back_collect);
viewPager=(ViewPager)view.findViewById(R.id.vpNewsListCollect);
initViewPager(); //设置 ViewPager
@ -68,6 +68,12 @@ public class CollectFragment extends Fragment implements ViewPager.OnPageChangeL
}
}
);
back_collect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getActivity().finish();
}
});
}
return view;
}
@ -121,7 +127,6 @@ public class CollectFragment extends Fragment implements ViewPager.OnPageChangeL
DisplayMetrics metrics=new DisplayMetrics();
super.getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics);
int screenWidth=metrics.widthPixels;
// int len=left+width/2-screenWidth/2;
int len=left+width/2-screenWidth/2;
hvChannelCollect.smoothScrollTo(len,0);
}

@ -11,6 +11,7 @@ import android.view.ViewGroup;
import android.widget.Button;
import android.widget.HorizontalScrollView;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.RadioButton;
import android.widget.RadioGroup;
@ -19,25 +20,34 @@ import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.viewpager.widget.ViewPager;
import com.example.leudaemialikeme.Activity.BlogSearchActivity;
import com.example.leudaemialikeme.Activity.GoAnswerActivity;
import com.example.leudaemialikeme.Activity.SendInvitationActivity;
import com.example.leudaemialikeme.Activity.SendQuestionActivity;
import com.example.leudaemialikeme.Adapter.InvitationPageFragmentAdapter;
import com.example.leudaemialikeme.Model.Blog;
import com.example.leudaemialikeme.R;
import java.util.ArrayList;
import java.util.List;
public class CommunityFragment extends Fragment implements ViewPager.OnPageChangeListener {
private static final String ARG_CHANNEL_LIST = "channel_list";
private View view=null; // 碎片的布局实例
private ViewPager viewPager; //内导航的碎片的容器
private static ViewPager viewPager; //内导航的碎片的容器
private RadioGroup rgChannel=null; // 内导航由单选按钮组构成
private HorizontalScrollView hvChannel=null; //单选按钮组可滚动动
private String[] channelList = {"全部","经验","扫雷","康复","问答"}; //默认的内导航栏目
private String[] channelList = {"全部","经验"
,"康复","扫雷","问答"}; //默认的内导航栏目
private InvitationPageFragmentAdapter adapter; //viewPager 的适配器
private PopupWindow popupWindow;
private ImageButton tab_add;
private Button bar_send_invitation;
private Button bar_send_question;
private Button bar_answer;
private LinearLayout blog_search;
static List<List<Blog>> resourceList=new ArrayList<>();
static List<Blog> blogList=new ArrayList<>();
//列表数据
public CommunityFragment() {
@ -51,6 +61,7 @@ public class CommunityFragment extends Fragment implements ViewPager.OnPageChang
view=inflater.inflate(R.layout.fragment_community, container, false);
tab_add = (ImageButton)view.findViewById(R.id.tab_add);
viewPager=(ViewPager)view.findViewById(R.id.vpNewsList);
blog_search=(LinearLayout)view.findViewById(R.id.blog_search);
initViewPager(); //设置 ViewPager
rgChannel=(RadioGroup)view.findViewById(R.id.rgChannel);
@ -86,8 +97,8 @@ public class CommunityFragment extends Fragment implements ViewPager.OnPageChang
return false;
}
});
bar_send_invitation = (Button)popupWindow_view.findViewById(R.id.bar_send_invitation);//发帖
bar_send_question = (Button)popupWindow_view.findViewById(R.id.bar_send_question);//提问
bar_send_invitation = (Button)popupWindow_view.findViewById(R.id.bar_send_invitation);
bar_send_question = (Button)popupWindow_view.findViewById(R.id.bar_send_question);
bar_answer = (Button)popupWindow_view.findViewById(R.id.bar_answer);
bar_send_invitation.setOnClickListener(new View.OnClickListener() {
@Override
@ -112,6 +123,16 @@ public class CommunityFragment extends Fragment implements ViewPager.OnPageChang
});
}
});
blog_search.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent intent=new Intent(view.getContext(), BlogSearchActivity.class);
view.getContext().startActivity(intent);
}
});
}
return view;
}
@ -120,7 +141,8 @@ public class CommunityFragment extends Fragment implements ViewPager.OnPageChang
for(int i=0;i<channelList.length;i++){
RadioButton rb=(RadioButton)inflater.inflate(R.layout.invitation_tab_rb,null);
rb.setId(i);
rb.setText(channelList[i]);
String text=" "+channelList[i]+" ";
rb.setText(text);
RadioGroup.LayoutParams params = new
RadioGroup.LayoutParams(RadioGroup.LayoutParams.WRAP_CONTENT,
RadioGroup.LayoutParams.WRAP_CONTENT);
@ -130,19 +152,30 @@ public class CommunityFragment extends Fragment implements ViewPager.OnPageChang
rgChannel.check(0);
}
public static ViewPager getViewPager(){
return viewPager;
}
private void initViewPager() {
FragmentManager fragmentManager = super.getActivity().getSupportFragmentManager();
adapter=new InvitationPageFragmentAdapter(fragmentManager, channelList);
//参数 channelList 将被适配器用来在动态切换碎片的时候实时创建碎片
// 设置 ViewPager 的适配器
//参数 channelList 将被适配器用来在动态切换碎片的时候实时创建碎片 //设置 ViewPager 的适配器
viewPager.setAdapter(adapter);
viewPager.setOffscreenPageLimit(2);
//设置显示第1个碎片
viewPager.setOffscreenPageLimit(1);
//设置显示第 1 个碎片
viewPager.setCurrentItem(0);
//设置 ViewPager 的切换监听
viewPager.addOnPageChangeListener(this);
}
public static List<Blog> getBlogList(){
return blogList;
}
public static List<List<Blog>> getResourceList(){
return resourceList;
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
@ -157,6 +190,7 @@ public class CommunityFragment extends Fragment implements ViewPager.OnPageChang
public void onPageScrollStateChanged(int state) {
}
private void setTab(int idx){
RadioButton rb=(RadioButton)rgChannel.getChildAt(idx);
rb.setChecked(true);
@ -169,5 +203,4 @@ public class CommunityFragment extends Fragment implements ViewPager.OnPageChang
hvChannel.smoothScrollTo(len,0);
}
}

@ -6,49 +6,57 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.HorizontalScrollView;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.viewpager.widget.ViewPager;
import com.example.leudaemialikeme.Adapter.InfoPageFragmentAdapter;
import com.example.leudaemialikeme.Model.News;
import com.example.leudaemialikeme.Adapter.HistoryPageFragmentAdapter;
import com.example.leudaemialikeme.R;
import java.util.ArrayList;
import java.util.List;
public class InfoFragment extends Fragment implements ViewPager.OnPageChangeListener{
private static final String ARG_CHANNEL_LIST = "channel_list_info";
public class HistoryFragment extends Fragment implements ViewPager.OnPageChangeListener{
// private static final String ARG_CHANNEL_LIST = "channel_list";
private View view=null; // 碎片的布局实例
private ViewPager viewPager; //内导航的碎片的容器
private RadioGroup rgChannel=null; // 内导航由单选按钮组构成
private HorizontalScrollView hvChannel=null; //单选按钮组可滚动
private String[] channelList = {" 全部 "," 公司 "," 红十字 "," 政府 "," 慈善 "}; //默认的内导航栏目
private InfoPageFragmentAdapter adapter; //资讯viewPager 的适配器
static List<List<News>> resourceList=new ArrayList<>();
static List<News> newsList=new ArrayList<>();
public InfoFragment() {
private RadioGroup rgChannelCollect=null; // 内导航由单选按钮组构成
private HorizontalScrollView hvChannelCollect=null; //单选按钮组可滚动动
private String[] channelList = {" 资讯 "," 问题 "," 帖子 "
}; //默认的内导航栏目
private HistoryPageFragmentAdapter adapter; //viewPager 的适配器
private TextView Name;
private String title;
private ImageView back_history;
public HistoryFragment() {
// Required empty public constructor
}
public HistoryFragment(String title){
this.title = title;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if(view==null) {
view = inflater.inflate(R.layout.fragment_info, container, false);//显示碎片的布局
viewPager=(ViewPager)view.findViewById(R.id.vpNewsListInfo);//加了这,后面就闪退了
if(view==null){
view=inflater.inflate(R.layout.fragment_history, container, false);
back_history = view.findViewById(R.id.back_history);
viewPager=(ViewPager)view.findViewById(R.id.vpNewsListHistory);
initViewPager(); //设置 ViewPager
rgChannel=(RadioGroup)view.findViewById(R.id.rgChannel20);
hvChannel=(HorizontalScrollView)view.findViewById(R.id.hvChannel20);
initTab(inflater);//初始化内导航标签
rgChannelCollect=(RadioGroup)view.findViewById(R.id.rgChannelHistory);
hvChannelCollect=(HorizontalScrollView)view.findViewById(R.id.hvChannelHistory);
initTab(inflater);
rgChannel.setOnCheckedChangeListener( //单选按钮的监听事件
Name = (TextView)view.findViewById(R.id.Name);
Name.setText(title);
rgChannelCollect.setOnCheckedChangeListener(
new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
@ -56,12 +64,17 @@ public class InfoFragment extends Fragment implements ViewPager.OnPageChangeLis
}
}
);
back_history.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getActivity().finish();
}
});
}
return view;
}
private void initTab(LayoutInflater inflater) {
private void initTab(LayoutInflater inflater) {//初始化上面的
for(int i=0;i<channelList.length;i++){
RadioButton rb=(RadioButton)inflater.inflate(R.layout.invitation_tab_rb,null);
rb.setId(i);
@ -70,41 +83,22 @@ public class InfoFragment extends Fragment implements ViewPager.OnPageChangeLis
RadioGroup.LayoutParams(RadioGroup.LayoutParams.WRAP_CONTENT,
RadioGroup.LayoutParams.WRAP_CONTENT);
rgChannel.addView(rb,params);
rgChannelCollect.addView(rb,params);
}
rgChannel.check(0);
rgChannelCollect.check(0);
}
private void initViewPager() {
private void initViewPager() { //初始化ViewPager
FragmentManager fragmentManager = super.getActivity().getSupportFragmentManager();
adapter=new InfoPageFragmentAdapter(fragmentManager, channelList);
//参数 channelList 将被适配器用来在动态切换碎片的时候实时创建碎片
// 设置 ViewPager 的适配器
// adapter=new MessagePageFragmentAdapter(fragmentManager, channelList);
adapter=new HistoryPageFragmentAdapter(fragmentManager, channelList);
//参数 channelList 将被适配器用来在动态切换碎片的时候实时创建碎片 //设置 ViewPager 的适配器
viewPager.setAdapter(adapter);
viewPager.setOffscreenPageLimit(1); //viewpager是默认预加载下一页的界面的
// viewpager提供了一个设置预加载页面数量的方法,让ViewPager多缓存一个页面
viewPager.setCurrentItem(0); //设置显示第1个碎片
viewPager.addOnPageChangeListener((ViewPager.OnPageChangeListener) this);//设置 ViewPager 的切换监听
}
public static List<News> getNewsList(){
return newsList;
}
public static List<List<News>> getResourceList(){
return resourceList;
}
private void setTab(int idx){
RadioButton rb=(RadioButton)rgChannel.getChildAt(idx);
rb.setChecked(true);
int left=rb.getLeft();
int width=rb.getMeasuredWidth();
DisplayMetrics metrics=new DisplayMetrics();
super.getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics);
int screenWidth=metrics.widthPixels;
int len=left+width/2-screenWidth/2;
hvChannel.smoothScrollTo(len,0);
viewPager.setOffscreenPageLimit(2);
//设置显示第 1 个碎片
viewPager.setCurrentItem(0);//这里设置显示第一个碎片
//设置 ViewPager 的切换监听
viewPager.addOnPageChangeListener(this);
}
@Override
@ -121,6 +115,15 @@ public class InfoFragment extends Fragment implements ViewPager.OnPageChangeLis
public void onPageScrollStateChanged(int state) {
}
}
private void setTab(int idx){
RadioButton rb=(RadioButton)rgChannelCollect.getChildAt(idx);
rb.setChecked(true);
int left=rb.getLeft();
int width=rb.getMeasuredWidth();
DisplayMetrics metrics=new DisplayMetrics();
super.getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics);
int screenWidth=metrics.widthPixels;
int len=left+width/2-screenWidth/2;
hvChannelCollect.smoothScrollTo(len,0);
}
}

@ -2,7 +2,6 @@ package com.example.leudaemialikeme.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -12,41 +11,64 @@ import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Activity.BaseActivity;
import com.example.leudaemialikeme.Activity.InfoActivity;
import com.example.leudaemialikeme.Activity.MdctRmdActivity;
import com.example.leudaemialikeme.Activity.NewsSearchActivity;
import com.example.leudaemialikeme.Adapter.NewsAdapter;
import com.example.leudaemialikeme.Model.News;
import com.example.leudaemialikeme.Activity.SearchActivity;
import com.example.leudaemialikeme.Adapter.RecnewsAdapter;
import com.example.leudaemialikeme.Model.Recnews;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.OkHttpUtil;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.IOException;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
/**
* A simple {@link Fragment} subclass.
* Use the {@link IndexFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class IndexFragment extends Fragment {
private boolean isPause = false;
private List<News> newsLists = new ArrayList<News>();
private RecyclerView recyclerView;
private NewsAdapter adapter;
private List<Recnews> recNews=new ArrayList<>();
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
// TODO: Rename and change types of parameters
private String mParam1;
private String mParam2;
public IndexFragment() {
// Required empty public constructor
}
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @param param1 Parameter 1.
* @param param2 Parameter 2.
* @return A new instance of fragment IndexFragment.
*/
// TODO: Rename and change types and number of parameters
public static IndexFragment newInstance(String param1, String param2) {
IndexFragment fragment = new IndexFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// set_eSearch_TextChanged(adapter);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
@ -54,18 +76,12 @@ public class IndexFragment extends Fragment {
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view=inflater.inflate(R.layout.fragment_index, container, false);
initRecNews();//初始化精选资讯的数据源
recyclerView=(RecyclerView) view.findViewById(R.id.recommend_news);//获取推荐资讯的布局
initRecNews();
RecyclerView recyclerView=(RecyclerView) view.findViewById(R.id.recommend_news);
LinearLayoutManager layoutManager=new LinearLayoutManager(this.getActivity());
recyclerView.setLayoutManager(layoutManager);
//initRecNews();//初始化数据源
adapter = new NewsAdapter();
adapter.setRecnewsList(newsLists);//这里设置数据源
// Log.e("adapter:",String.valueOf(newsLists));
recyclerView.setAdapter(adapter);
RecnewsAdapter recnewsAdapter =new RecnewsAdapter(recNews);
recyclerView.setAdapter(recnewsAdapter);
initClick(view);
@ -73,43 +89,6 @@ public class IndexFragment extends Fragment {
}
// private void set_eSearch_TextChanged(final NewsAdapter adapter)
// {
// final EditText eSearch = (EditText)getView().findViewById(R.id.textBox);
// //final ImageView ivDeleteText=(ImageView)findViewById(R.id.ivDeleteText);
//
// eSearch.addTextChangedListener(new TextWatcher() {
// @Override
// public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// adapter.getFilter().filter(arg0.toString());
// }
// @Override
// public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,int arg3) {
// // TODO Auto-generated method stub
////文本框改变之前会运行的动作
// }
// @Override
// public void afterTextChanged(Editable s) { //文本框改变之后运行的动作
// if(s.length() == 0){
// ivDeleteText.setVisibility( View.GONE);//当文本框为空时,叉号消失
// }
// else {
// ivDeleteText.setVisibility(View.VISIBLE);//当文本框不为空时,出现叉号
// adapter.getFilter().filter(eSearch.getText().toString());
// ivDeleteText.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// eSearch.setText("");
//
// }
// });
// }
// }
// });
// }
private void initClick(View view){
LinearLayout searchLinear=view.findViewById(R.id.search_linear);
LinearLayout recLinear=view.findViewById(R.id.rec_linear);
@ -121,12 +100,11 @@ public class IndexFragment extends Fragment {
LinearLayout charity=view.findViewById(R.id.charity);
LinearLayout all=view.findViewById(R.id.all);
//首页搜索的跳转
searchLinear.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
Intent intent=new Intent(getContext(), NewsSearchActivity.class);
Intent intent=new Intent(getContext(), SearchActivity.class);
startActivity(intent);
}
});
@ -149,8 +127,7 @@ public class IndexFragment extends Fragment {
@Override
public void onClick(View view) {
Intent intent=new Intent(getContext(), MdctRmdActivity.class);
startActivity(intent);
}
startActivity(intent); }
});
companyLinear.setOnClickListener(new View.OnClickListener(){
@ -208,77 +185,33 @@ public class IndexFragment extends Fragment {
}
private void initRecNews(){ //需要将资讯的信息从数据库里取出来,然后根据浏览量降序排列
Map<String,String> paramMap = new HashMap<String,String>();
getInfoRequest(paramMap);
}
private void getInfoRequest(final Map paramMap){//Info请求
new Thread(new Runnable(){ //新开一个线程
@Override
public void run() {
try{
String url= BaseActivity.SERVER_URL+"/news-servlet?action=get-infoIndex";//这里对应Eclipse的Servlet的
OkHttpUtil.asyPost(url, paramMap, new Callback() { //异步post
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String jsonStr = response.body().string();//这里就调用InfoResponse响应
Log.e("首页Info的json",jsonStr);
getInfoResponse(jsonStr);
}
});
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
private void getInfoResponse(final String jsonStr){//这里是info响应
getActivity().runOnUiThread(new Runnable(){ //新开一个线程
@Override
public void run() {
Gson gson = new Gson(); // 使用 gson 库解析 JSON 数据
// 创建一个 TypeToken 的匿名子类对象,并调用对象的 getType()方法
Type listType = new TypeToken<List<News>>() {}.getType();
// 把获取到的信息集合存到 newsList 中
newsLists = gson.fromJson(jsonStr, listType);
Log.e("jsonStr",jsonStr);
Log.e("object", String.valueOf(newsLists));
Log.e("newsLists最后",String.valueOf(newsLists));
newsLists = gson.fromJson(jsonStr, listType);
adapter.setRecnewsList(newsLists);//这里设置数据源
recyclerView.setAdapter(adapter);
}
});
}
@Override
public void onPause() {
super.onPause();
isPause = true; //记录页面已经被暂停
}
@Override
public void onResume() {
super.onResume();
if (isPause) { //判断是否暂停
isPause = false;
//刷新页面的显示
//得到请求,然后刷新页面
Map<String,String> paramMap = new HashMap<String,String>();
getInfoRequest(paramMap);
adapter.setRecnewsList(newsLists);//这里设置数据源
recyclerView.setAdapter(adapter);//更新显示
//int imageNum,String theme,String intro,int visNum, String time
private void initRecNews(){
for(int i=0;i<2;i++){
Recnews news1=new Recnews(R.drawable.rec_news1,
"儿童急性B淋巴细胞白血病,除了传统疗法还有哪些前沿治疗方法呢?",
"急性淋巴细胞白血病ALL是儿童最常见的恶性肿瘤其中约85%为……"
,102,"2021-11-6 09:19:54"
);
recNews.add(news1);
Recnews news2=new Recnews(R.drawable.rec_news2,
"儿童急性B淋巴细胞白血病,除了传统疗法还有哪些前沿治疗方法呢?",
"急性淋巴细胞白血病ALL是儿童最常见的恶性肿瘤其中约85%为……"
,100,"2021-12-6 03:19:54"
);
recNews.add(news2);
Recnews news3=new Recnews(R.drawable.rec_news3,
"儿童急性B淋巴细胞白血病,除了传统疗法还有哪些前沿治疗方法呢?",
"急性淋巴细胞白血病ALL是儿童最常见的恶性肿瘤其中约85%为……"
,100,"2021-12-6 03:19:54"
);
recNews.add(news3);
Recnews news4=new Recnews(R.drawable.rec_news4,
"儿童急性B淋巴细胞白血病,除了传统疗法还有哪些前沿治疗方法呢?",
"急性淋巴细胞白血病ALL是儿童最常见的恶性肿瘤其中约85%为……"
,100,"2021-12-6 03:19:54"
);
recNews.add(news4);
}
}
}

@ -1,477 +0,0 @@
package com.example.leudaemialikeme.Fragment;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.RequiresApi;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Activity.BaseActivity;
import com.example.leudaemialikeme.Adapter.NewsAdapter;
import com.example.leudaemialikeme.Model.News;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.OkHttpUtil;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.IOException;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
public class InfoChannelFragment extends Fragment {
private static final String ARG_CATEGORY_TITLE = "category_title";
private static final String ARG_CATEGORY_TITLE_NUM = "category_title_num";
private String InfoCategoryTitle = "Default";
//private String infoCategoryTitle = "Default";
private int infoCategoryTitleNum = 0;
//public static List<List<News>> resourceList=new ArrayList<>();
public static List<News> allNews=new ArrayList<>();
// private TextView mTitleField;
// private List<Recnews> recNews=new ArrayList<>();
// static List<News> newsList=new ArrayList<>();//全部
// private List<News> newsLists=new ArrayList<>();
static List<News> comNews=new ArrayList<>();//公司
static List<News> redNews=new ArrayList<>();//红十字
static List<News> govNews=new ArrayList<>();//政府
static List<News> chaNews=new ArrayList<>();//慈善
// static BlogAdapter allAdapter=new BlogAdapter();
static NewsAdapter comAdapter=new NewsAdapter();//公司的adapter
static NewsAdapter redAdapter=new NewsAdapter();//红十字的adapter
static NewsAdapter govAdapter=new NewsAdapter();//政府的adapter
static NewsAdapter chaAdapter=new NewsAdapter();//慈善的adapter
RecyclerView allRecyclerView;//全部的RecyclerView
RecyclerView comRecyclerView;//公司的RecyclerView
RecyclerView redRecyclerView;//红十字的RecyclerView
RecyclerView govRecyclerView;//政府的RecyclerView
RecyclerView chaRecyclerView;//慈善的RecyclerView
private boolean isPause = false;
private final String[] channelList = {"全部","公司","红十字","政府","慈善"};
public InfoChannelFragment() {
// Required empty public constructor
}
public static InfoChannelFragment newInstance(String InfoCategoryTitle,int pos) {
InfoChannelFragment fragment = new InfoChannelFragment();
Bundle args = new Bundle();
args.putString(ARG_CATEGORY_TITLE,InfoCategoryTitle);
args.putInt(ARG_CATEGORY_TITLE_NUM,pos);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try{
InfoCategoryTitle = (String)getArguments().getString(ARG_CATEGORY_TITLE);
infoCategoryTitleNum = getArguments().getInt(ARG_CATEGORY_TITLE_NUM);
}catch (java.lang.NullPointerException e){
System.out.println("TesFragment getArg error!");
}
//initRecNews();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view;
view = inflater.inflate(R.layout.recyclerview,container,false);
initAllNews();//所有new组
//全部,公司,红十字,政府,慈善
comAdapter=new NewsAdapter();
comAdapter.setRecnewsList(comNews);
redAdapter=new NewsAdapter();
redAdapter.setRecnewsList(redNews);
govAdapter=new NewsAdapter();
govAdapter.setRecnewsList(govNews);
chaAdapter=new NewsAdapter();
chaAdapter.setRecnewsList(chaNews);
if (infoCategoryTitleNum == 0) {//这里是全部的那个内导航
view = inflater.inflate(R.layout.recyclerview,container,false);
allRecyclerView= (RecyclerView) view.findViewById(R.id.list_community);
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
allRecyclerView.setLayoutManager(layoutManager);
NewsAdapter allAdapter = new NewsAdapter(allNews);
allRecyclerView.setAdapter(allAdapter);
initAllNewsList();//初始化数据
allAdapter.notifyDataSetChanged();
} else if (infoCategoryTitleNum == 4) {//这里是慈善
chaRecyclerView = (RecyclerView) view.findViewById(R.id.list_community);
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
chaRecyclerView.setLayoutManager(layoutManager);
chaRecyclerView.setAdapter(chaAdapter);
// Log.e("应该为4慈善", String.valueOf(invitationCategoryTitleNum));
} else if (infoCategoryTitleNum == 2) {//这里是红十字
redRecyclerView = (RecyclerView) view.findViewById(R.id.list_community);
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
redRecyclerView.setLayoutManager(layoutManager);
redRecyclerView.setAdapter(redAdapter);
// Log.e("应该为2红十字", String.valueOf(invitationCategoryTitleNum));
// Log.e("应该为2红十字",String.valueOf(recBlog));
} else if (infoCategoryTitleNum == 3) {//这里是政府
govRecyclerView = (RecyclerView) view.findViewById(R.id.list_community);
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
govRecyclerView.setLayoutManager(layoutManager);
govRecyclerView.setAdapter(govAdapter);
// Log.e("应该为3政府", String.valueOf(invitationCategoryTitleNum));
}
else if (infoCategoryTitleNum == 1) {//这里是公司
comRecyclerView = (RecyclerView) view.findViewById(R.id.list_community);
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
comRecyclerView.setLayoutManager(layoutManager);
comRecyclerView.setAdapter(comAdapter);
}
return view;
}
private void initAllNewsList(){
Map<String,String[]> paramMap = new HashMap<String,String[]>();
paramMap.put("channelList", new String[]{"全部"});
getAllNewsListRequest(paramMap);
//getQuestionListRequest();
}
private void initAllNews(){ //初始化全部的资讯
//全部,公司,红十字,政府,慈善
// Map<String,String[]> paramMap_all = new HashMap<String,String[]>();
Map<String,String[]> paramMap_com = new HashMap<String,String[]>();
Map<String,String[]> paramMap_red = new HashMap<String,String[]>();
Map<String,String[]> paramMap_gov = new HashMap<String,String[]>();
Map<String,String[]> paramMap_cha = new HashMap<String,String[]>();
// paramMap.put("channelList",java.util.Arrays.copyOf(channelList,1));
paramMap_com.put("channelList", new String[]{"公司"});
paramMap_red.put("channelList", new String[]{"红十字"});
paramMap_gov.put("channelList",new String[]{"政府"});
paramMap_cha.put("channelList",new String[]{"慈善"});
getComListRequest(paramMap_com);
getRedListRequest(paramMap_red);
getGovListRequest(paramMap_gov);
getChaListRequest(paramMap_cha);//慈善
}
private void getComListRequest(final Map paramMap){//公司的Request
new Thread(new Runnable() {
@Override
public void run() {
try{
String url = BaseActivity.SERVER_URL + "/news-servlet?action=get-info";
OkHttpUtil.asyPost(url, paramMap, new Callback(){//异步
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String jsonStr = response.body().string();
Log.e("公司的request的str",jsonStr);
getComInfoResponse(jsonStr);
}
});
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
private void getGovListRequest(final Map paramMap){//政府的request
new Thread(new Runnable() {
@Override
public void run() {
try{
String url = BaseActivity.SERVER_URL + "/news-servlet?action=get-info";
OkHttpUtil.asyPost(url, paramMap, new Callback(){
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String jsonStr = response.body().string();
getGovInfoResponse(jsonStr);//得到响应
}
});
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
private void getRedListRequest(final Map paramMap){//红十字的request
new Thread(new Runnable() {
@Override
public void run() {
try{
String url = BaseActivity.SERVER_URL + "/news-servlet?action=get-info";
OkHttpUtil.asyPost(url, paramMap, new Callback(){
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String jsonStr = response.body().string();
getRedInfoResponse(jsonStr);
}
});
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
private void getChaListRequest(final Map paramMap){//慈善的request
new Thread(new Runnable() {
@Override
public void run() {
try{
String url = BaseActivity.SERVER_URL + "/news-servlet?action=get-info";
OkHttpUtil.asyPost(url, paramMap, new Callback(){
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String jsonStr = response.body().string();
getChaInfoResponse(jsonStr);
}
});
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
private void getAllNewsListRequest(final Map paramMap) {//全部(第一栏)
new Thread(new Runnable() {
@Override
public void run() {
try {
String url = BaseActivity.SERVER_URL + "/news-servlet?action=get-info";
OkHttpUtil.asyPost(url, paramMap, new Callback() {//异步的方法
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String jsonStr = response.body().string();
getAllNewsListResponse(jsonStr);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
private void getAllNewsListResponse(final String jsonStr){
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
Gson gson=new Gson();
Type listType = new TypeToken<List<List<News>>>() {}.getType();
Log.e("AllBlogList:jsonStr",jsonStr);
List<News> lists = gson.fromJson(jsonStr, listType);
// List<Blog> allBlogList=new ArrayList<>();
lists = (List<News>) lists.get(0);
allNews=lists;
// List<List<News>> lists = gson.fromJson(jsonStr, listType);
//// List<Blog> allBlogList=new ArrayList<>();
// allNews = (List<News>) lists.get(0);//标记
Log.e("allNews的数据",String.valueOf(lists));
NewsAdapter allAdapter=new NewsAdapter(allNews);
allRecyclerView.setAdapter(allAdapter);
}
});
}
private void getComInfoResponse(final String jsonStr){//公司的Response
getActivity().runOnUiThread(new Runnable(){
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void run() {
Log.e("公司的Response的jsonStr",jsonStr);
Gson gson = new Gson(); // 使用 gson 库解析 JSON 数据
// 创建一个 TypeToken 的匿名子类对象,并调用对象的 getType()方法
Type listType = new TypeToken<List<List<News>>>() {}.getType();
// Log.e("jsonStr",jsonStr);
List<List<News>> lists = gson.fromJson(jsonStr, listType);
Log.e("公司的lists",String.valueOf(lists));
List<News> comNewsList=new ArrayList<>();
comNewsList = (List<News>) lists.get(0);
InfoChannelFragment.comNews=comNewsList;
Log.e("comNews的数据(公司)",String.valueOf(comNewsList));
comRecyclerView= (RecyclerView) (getActivity().getLayoutInflater().inflate(R.layout.recyclerview, null)).findViewById(R.id.list_community);
comAdapter.setRecnewsList(comNews);
comRecyclerView.setAdapter(comAdapter);
}
});
}
private void getRedInfoResponse(final String jsonStr){//红十字的Response
getActivity().runOnUiThread(new Runnable(){
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void run() {
Log.e("红十字的Response的jsonStr",jsonStr);
Gson gson = new Gson(); // 使用 gson 库解析 JSON 数据
// 创建一个 TypeToken 的匿名子类对象,并调用对象的 getType()方法
Type listType = new TypeToken<List<List<News>>>() {}.getType();
// Log.e("jsonStr",jsonStr);
List<List<News>> lists = gson.fromJson(jsonStr, listType);
List<News> redNewsList=new ArrayList<>();
redNewsList = (List<News>) lists.get(0);
InfoChannelFragment.redNews=redNewsList;
Log.e("resNews的数据(公司)",String.valueOf(redNewsList));
redAdapter.setRecnewsList(redNews);
redRecyclerView= (RecyclerView) (getActivity().getLayoutInflater().inflate(R.layout.recyclerview, null)).findViewById(R.id.list_community);
redRecyclerView.setAdapter(redAdapter);
// Log.e("badBlog",String.valueOf(badBlogList));
}
});
}
private void getGovInfoResponse(final String jsonStr){//政府的Response
getActivity().runOnUiThread(new Runnable(){
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void run() {
Log.e("政府的Response的jsonStr",jsonStr);
Gson gson = new Gson(); // 使用 gson 库解析 JSON 数据
// 创建一个 TypeToken 的匿名子类对象,并调用对象的 getType()方法
Type listType = new TypeToken<List<List<News>>>() {}.getType();
// Log.e("jsonStr",jsonStr);
List<List<News>> lists = gson.fromJson(jsonStr, listType);
List<News> govNewsList=new ArrayList<>();
govNewsList = (List<News>) lists.get(0);
InfoChannelFragment.govNews=govNewsList;
Log.e("govNews的数据(公司)",String.valueOf(govNewsList));
govAdapter.setRecnewsList(govNews);
govRecyclerView= (RecyclerView) (getActivity().getLayoutInflater().inflate(R.layout.recyclerview, null)).findViewById(R.id.list_community);
govRecyclerView.setAdapter(govAdapter);
// Log.e("govNews的数据",String.valueOf(recBlogList));
}
});
}
private void getChaInfoResponse(final String jsonStr){//慈善的Response
getActivity().runOnUiThread(new Runnable(){
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void run() {
Log.e("慈善的Response的jsonStr",jsonStr);
Gson gson = new Gson(); // 使用 gson 库解析 JSON 数据
// 创建一个 TypeToken 的匿名子类对象,并调用对象的 getType()方法
Type listType = new TypeToken<List<List<News>>>() {}.getType();
// Log.e("jsonStr",jsonStr);
List<List<News>> lists = gson.fromJson(jsonStr, listType);
List<News> chaNewsList=new ArrayList<>();
chaNewsList = (List<News>) lists.get(0);
InfoChannelFragment.chaNews=chaNewsList;
Log.e("chaNews的数据(公司)",String.valueOf(chaNewsList));
chaAdapter.setRecnewsList(chaNews);
chaRecyclerView= (RecyclerView) (getActivity().getLayoutInflater().inflate(R.layout.recyclerview, null)).findViewById(R.id.list_community);
chaRecyclerView.setAdapter(chaAdapter);
// Log.e("chaNews的数据",String.valueOf(recBlogList));
}
});
}
@Override
public void onPause() {
super.onPause();
isPause = true; //记录页面已经被暂停
}
@Override
public void onResume() {
super.onResume();
if (isPause) { //判断是否暂停
isPause = false;
if (infoCategoryTitleNum == 0) {
Map<String, String[]> paramMap = new HashMap<String, String[]>();
paramMap.put("channelList", new String[]{"全部"});
getAllNewsListRequest(paramMap);
NewsAdapter allAdapter = new NewsAdapter(allNews);
allRecyclerView.setAdapter(allAdapter);
}else if(infoCategoryTitleNum == 4) {//4是慈善
Map<String, String[]> paramMap = new HashMap<String, String[]>();
paramMap = new HashMap<String, String[]>();
paramMap.put("channelList", new String[]{"慈善"});
getChaListRequest(paramMap);
NewsAdapter chaAdapter = new NewsAdapter(chaNews);
chaRecyclerView.setAdapter(chaAdapter);
}else if(infoCategoryTitleNum == 2) { //2是红十字
Map<String, String[]> paramMap = new HashMap<String, String[]>();
paramMap = new HashMap<String, String[]>();
paramMap.put("channelList", new String[]{"红十字"});
getRedListRequest(paramMap);
NewsAdapter redAdapter = new NewsAdapter(redNews);
redRecyclerView.setAdapter(redAdapter);
}else if(infoCategoryTitleNum == 3) { //3是政府
Map<String, String[]> paramMap = new HashMap<String, String[]>();
paramMap = new HashMap<String, String[]>();
paramMap.put("channelList", new String[]{"政府"});
getGovListRequest(paramMap);
NewsAdapter govAdapter = new NewsAdapter(govNews);
govRecyclerView.setAdapter(govAdapter);
}else if(infoCategoryTitleNum == 1) { //1是公司
Map<String, String[]> paramMap = new HashMap<String, String[]>();
paramMap = new HashMap<String, String[]>();
paramMap.put("channelList", new String[]{"公司"});
getComListRequest(paramMap);
NewsAdapter comAdapter = new NewsAdapter(comNews);
comRecyclerView.setAdapter(comAdapter);
}
}
}
}

@ -1,102 +1,519 @@
package com.example.leudaemialikeme.Fragment;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.RequiresApi;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Adapter.RecnewsAdapter;
import com.example.leudaemialikeme.Activity.BaseActivity;
import com.example.leudaemialikeme.Adapter.BlogAdapter;
import com.example.leudaemialikeme.Adapter.QuestionAdapter;
import com.example.leudaemialikeme.Model.Blog;
import com.example.leudaemialikeme.Model.Question;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Model.Recnews;
import com.example.leudaemialikeme.Utils.OkHttpUtil;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.IOException;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
public class InvitationChannelFragment extends Fragment {
private static final String ARG_CATEGORY_TITLE = "category_title";
private static final String ARG_CATEGORY_TITLE_NUM = "category_title_num";
public static List<List<Blog>> resourceList = new ArrayList<>();
private List<Question> allQuestion = new ArrayList<>();
private List<Blog> allBlog = new ArrayList<>();
private String invitationCategoryTitle = "Default";
private int invitationCategoryTitleNum = 0;
private TextView mTitleField;
private List<Recnews> recNews=new ArrayList<>();
static List<Blog> blogList = new ArrayList<>();
private List<Blog> blogLists = new ArrayList<>();
private List<Blog> expBlog = new ArrayList<>();
private List<Blog> badBlog = new ArrayList<>();
private List<Blog> recBlog = new ArrayList<>();
// static BlogAdapter allAdapter=new BlogAdapter();
private QuestionAdapter questionAdapter = new QuestionAdapter();
private BlogAdapter expAdapter = new BlogAdapter();
private BlogAdapter badAdapter = new BlogAdapter();
private BlogAdapter recAdapter = new BlogAdapter();
private RecyclerView allRecyclerView;
private RecyclerView questionRecyclerView;
private RecyclerView expRecyclerView;
private RecyclerView recRecyclerView;
private RecyclerView badRecyclerView;
private boolean isPause = false;
private final String[] channelList = {"全部", "经验"
, "康复", "扫雷", "问答"};
// int temp=0;
public InvitationChannelFragment() {
// Required empty public constructor
}
public static InvitationChannelFragment newInstance(String invitationCategoryTitle) {
public static InvitationChannelFragment newInstance(String invitationCategoryTitle, int pos) {
InvitationChannelFragment fragment = new InvitationChannelFragment();
Bundle args = new Bundle();
args.putString(ARG_CATEGORY_TITLE,invitationCategoryTitle);
args.putString(ARG_CATEGORY_TITLE, invitationCategoryTitle);
args.putInt(ARG_CATEGORY_TITLE_NUM, pos);
fragment.setArguments(args);
// blogList=getBlogList();
// resourceList=getResourceList();
// Log.e("newInstance","newInstance");
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try{
invitationCategoryTitle = (String)getArguments().getString(ARG_CATEGORY_TITLE);
}catch (java.lang.NullPointerException e){
try {
invitationCategoryTitle = (String) getArguments().getString(ARG_CATEGORY_TITLE);
invitationCategoryTitleNum = getArguments().getInt(ARG_CATEGORY_TITLE_NUM);
// Log.e("onCreate","onCreate");
} catch (java.lang.NullPointerException e) {
System.out.println("TesFragment getArg error!");
}
initRecNews();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view;
if(invitationCategoryTitle.equals("全部")||invitationCategoryTitle.equals("关注")){
//放那个recycleView
view = inflater.inflate(R.layout.recyclerview,container,false);
RecyclerView recyclerView = (RecyclerView)view.findViewById(R.id.list_community);
view = inflater.inflate(R.layout.recyclerview, container, false);
// initAllBlog();// 所有blog组
// initAllBlogList(); //第一栏:全部项
questionAdapter = new QuestionAdapter();
questionAdapter.setQuestionList(allQuestion);
expAdapter = new BlogAdapter();
expAdapter.setRecnewsList(expBlog);
badAdapter = new BlogAdapter();
badAdapter.setRecnewsList(badBlog);
recAdapter = new BlogAdapter();
recAdapter.setRecnewsList(recBlog);
if (invitationCategoryTitleNum == 0) {
view = inflater.inflate(R.layout.recyclerview, container, false);
allRecyclerView = (RecyclerView) view.findViewById(R.id.list_community);
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
allRecyclerView.setLayoutManager(layoutManager);
BlogAdapter allAdapter = new BlogAdapter(allBlog);
allRecyclerView.setAdapter(allAdapter);
// initAllBlogList();
Map<String, String[]> paramMap = new HashMap<String, String[]>();
paramMap.put("channelList", new String[]{"全部"});
getAllBlogListRequest(paramMap);
// allAdapter.notifyDataSetChanged();
} else if (invitationCategoryTitleNum == 4) {
questionRecyclerView = (RecyclerView) view.findViewById(R.id.list_community);
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(layoutManager);
RecnewsAdapter adapter = new RecnewsAdapter(recNews);
recyclerView.setAdapter(adapter);
questionRecyclerView.setLayoutManager(layoutManager);
questionRecyclerView.setAdapter(questionAdapter);
// Map<String, String[]> paramMap = new HashMap<>();
// paramMap.put("channelList", new String[]{"问答"});
getQuestionListRequest();
// Log.e("应该为4问答", String.valueOf(invitationCategoryTitleNum));
} else if (invitationCategoryTitleNum == 2) {
recRecyclerView = (RecyclerView) view.findViewById(R.id.list_community);
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
recRecyclerView.setLayoutManager(layoutManager);
recRecyclerView.setAdapter(recAdapter);
Map<String, String[]> paramMap = new HashMap<String, String[]>();
paramMap.put("channelList", new String[]{"康复"});
getRecInvitationRequest(paramMap);
// Log.e("应该为2康复", String.valueOf(invitationCategoryTitleNum));
// Log.e("应该为2康复数据",String.valueOf(recBlog));
} else if (invitationCategoryTitleNum == 3) {
badRecyclerView = (RecyclerView) view.findViewById(R.id.list_community);
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
badRecyclerView.setLayoutManager(layoutManager);
badRecyclerView.setAdapter(badAdapter);
Map<String, String[]> paramMap = new HashMap<String, String[]>();
paramMap.put("channelList", new String[]{"扫雷"});
getBadListRequest(paramMap);
// Log.e("应该为3扫雷", String.valueOf(invitationCategoryTitleNum));
} else if (invitationCategoryTitleNum == 1) {
expRecyclerView = (RecyclerView) view.findViewById(R.id.list_community);
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
expRecyclerView.setLayoutManager(layoutManager);
expRecyclerView.setAdapter(expAdapter);
Map<String, String[]> paramMap = new HashMap<String, String[]>();
paramMap.put("channelList", new String[]{"经验"});
getExpListRequest(paramMap);
}
else {
view = inflater.inflate(R.layout.fragment_invitation_channel, container, false);
mTitleField = (TextView)view.findViewById(R.id.invitationCategoryTitle);
mTitleField.setText(invitationCategoryTitle);
}
// temp=temp+1;
return view;
}
private void initRecNews(){
for(int i=0;i<2;i++){
Recnews news1=new Recnews(R.drawable.rec_news1,
"哪些人容易得白血病?得白血病的人往往有这种征兆...",
"白血病早期是会有一定症状的。比如持续发烧,一些急性白血病前期会出现持续发热,发热原因可能是由于感染……"
,102,"2021-11-6 09:19:54"
);
recNews.add(news1);
Recnews news2=new Recnews(R.drawable.rec_news2,
"抨击误区——白血病化疗那么痛苦,干脆不做化疗了?!",
" “白血病化疗病死率高!不治病还促进病情严重!”“白血病用化疗药很痛苦的,别治了……"
,100,"2021-12-6 03:19:54"
);
recNews.add(news2);
Recnews news3=new Recnews(R.drawable.rec_news3,
"小天使医典:儿童白血病康复指引",
"目前,医学界公认的儿童白血病的发病率为 4-6/10 万人。其中,新增儿童\n" +
"白血病患儿就占二分之一……"
,100,"2021-12-6 03:19:54"
);
recNews.add(news3);
Recnews news4=new Recnews(R.drawable.rec_news4,
"儿童急性B淋巴细胞白血病,除了传统疗法还有哪些前沿治疗方法呢?",
"急性淋巴细胞白血病ALL是儿童最常见的恶性肿瘤其中约85%为……"
,100,"2021-12-6 03:19:54"
);
recNews.add(news4);
private void initAllBlogList() {
Map<String, String[]> paramMap = new HashMap<String, String[]>();
paramMap.put("channelList", new String[]{"全部"});
getAllBlogListRequest(paramMap);
getQuestionListRequest();
}
private void getQuestionListRequest() {
new Thread(new Runnable() {
@Override
public void run() {
try {
String url2 = BaseActivity.SERVER_URL + "/question-servlet?action=get-allQuestion";
OkHttpUtil.asyPost(url2, null, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String jsonStr = response.body().string();
getQuestionResponse(jsonStr);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
private void getExpListRequest(final Map paramMap) {
new Thread(new Runnable() {
@Override
public void run() {
try {
String url = BaseActivity.SERVER_URL + "/blog-servlet?action=get-invitation";
OkHttpUtil.asyPost(url, paramMap, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String jsonStr = response.body().string();
getExpInvitationResponse(jsonStr);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
private void getBadListRequest(final Map paramMap) {
new Thread(new Runnable() {
@Override
public void run() {
try {
String url = BaseActivity.SERVER_URL + "/blog-servlet?action=get-invitation";
OkHttpUtil.asyPost(url, paramMap, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String jsonStr = response.body().string();
getBadInvitationResponse(jsonStr);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
private void getAllBlogListRequest(final Map paramMap) {
new Thread(new Runnable() {
@Override
public void run() {
try {
String url = BaseActivity.SERVER_URL + "/blog-servlet?action=get-invitation";
OkHttpUtil.asyPost(url, paramMap, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String jsonStr = response.body().string();
getAllBlogListResponse(jsonStr);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
private void getAllBlogListResponse(final String jsonStr) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
Gson gson = new Gson();
Type listType = new TypeToken<List<List<Blog>>>() {
}.getType();
// Log.e("AllBlogList:jsonStr",jsonStr);
List<Blog> lists = gson.fromJson(jsonStr, listType);
// List<Blog> allBlogList=new ArrayList<>();
lists = (List<Blog>) lists.get(0);
allBlog = lists;
// Log.e("allBlog的数据",String.valueOf(lists));
BlogAdapter allAdapter = new BlogAdapter(allBlog);
allRecyclerView.setAdapter(allAdapter);
//
// if(allAdapter==null)
// Log.e("allAdapter","allAdapter is null");
// if(allRecyclerView==null)
// Log.e("allRecyclerView1","allRecyclerView1 is null");
// allRecyclerView= (RecyclerView) (getActivity().getLayoutInflater().inflate(R.layout.recyclerview, null)).findViewById(R.id.list_community);
// if(allRecyclerView==null)
// Log.e("allRecyclerView2","allRecyclerView2 is null");
// allRecyclerView.setAdapter(allAdapter);
//// InvitationChannelFragment.allBlog=allBlogList;
}
});
}
private void initAllBlog() {
Map<String, String[]> paramMap_bad = new HashMap<String, String[]>();
Map<String, String[]> paramMap_rec = new HashMap<String, String[]>();
Map<String, String[]> paramMap_exp = new HashMap<String, String[]>();
Map<String, String[]> paramMap_all = new HashMap<String, String[]>();
Map<String, String[]> paramMap = new HashMap<String, String[]>();
// paramMap.put("channelList",java.util.Arrays.copyOf(channelList,1));
paramMap_rec.put("channelList", new String[]{"康复"});
paramMap_bad.put("channelList", new String[]{"扫雷"});
paramMap_exp.put("channelList", new String[]{"经验"});
getExpListRequest(paramMap_exp);
getBadListRequest(paramMap_bad);
getRecInvitationRequest(paramMap_rec);
}
private void getRecInvitationRequest(final Map paramMap) {
new Thread(new Runnable() {
@Override
public void run() {
try {
String url = BaseActivity.SERVER_URL + "/blog-servlet?action=get-invitation";
OkHttpUtil.asyPost(url, paramMap, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String jsonStr = response.body().string();
getRecInvitationResponse(jsonStr);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
private void getInvitationRequest(final Map paramMap, final Map paramMap_bad,
final Map paramMap_rec, final Map paramMap_exp) {
new Thread(new Runnable() {
@Override
public void run() {
try {
String url1 = BaseActivity.SERVER_URL + "/blog-servlet?action=get-invitation";
String url2 = BaseActivity.SERVER_URL + "/question-servlet?action=get-allQuestion";
// String jsonStr1= OkHttpUtil.synPost(url1, paramMap);换为异步
// String jsonStr2= OkHttpUtil.synPost(url2, null);换为异步
// String jsonStr_rec= OkHttpUtil.synPost(url1, paramMap_rec);
// String jsonStr_bad= OkHttpUtil.synPost(url1, paramMap_bad);
// String jsonStr_exp= OkHttpUtil.synPost(url1, paramMap_exp);
// Log.e("getInvitationRequest","getInvitationRequest");
// getInvitationResponse(jsonStr1);
// getQuestionResponse(jsonStr2);
// getRecInvitationResponse(jsonStr_rec);
// getBadInvitationResponse(jsonStr_bad);
// getExpInvitationResponse(jsonStr_exp);
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
private void getBadInvitationResponse(final String jsonStr) {
getActivity().runOnUiThread(new Runnable() {
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void run() {
// Log.e("jsonStr",jsonStr);
Gson gson = new Gson(); // 使用 gson 库解析 JSON 数据
// 创建一个 TypeToken 的匿名子类对象,并调用对象的 getType()方法
Type listType = new TypeToken<List<List<Blog>>>() {
}.getType();
// Log.e("jsonStr",jsonStr);
List<List<Blog>> lists = gson.fromJson(jsonStr, listType);
List<Blog> badBlogList = new ArrayList<>();
badBlogList = (List<Blog>) lists.get(0);
badBlog = badBlogList;
BlogAdapter badAdapter = new BlogAdapter();
badAdapter.setRecnewsList(badBlog);
badRecyclerView.setAdapter(badAdapter);
// Log.e("badBlog",String.valueOf(badBlogList));
}
});
}
private void getRecInvitationResponse(final String jsonStr) {
getActivity().runOnUiThread(new Runnable() {
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void run() {
// Log.e("jsonStr",jsonStr);
Gson gson = new Gson(); // 使用 gson 库解析 JSON 数据
// 创建一个 TypeToken 的匿名子类对象,并调用对象的 getType()方法
Type listType = new TypeToken<List<List<Blog>>>() {
}.getType();
// Log.e("jsonStr",jsonStr);
List<List<Blog>> lists = gson.fromJson(jsonStr, listType);
List<Blog> recBlogList = new ArrayList<>();
recBlogList = (List<Blog>) lists.get(0);
recBlog = recBlogList;
BlogAdapter recAdapter = new BlogAdapter();
recAdapter.setRecnewsList(recBlog);
recRecyclerView.setAdapter(recAdapter);
// Log.e("recBlog的数据",String.valueOf(recBlogList));
}
});
}
private void getExpInvitationResponse(final String jsonStr) {
getActivity().runOnUiThread(new Runnable() {
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void run() {
Log.e("jsonStr", jsonStr);
Gson gson = new Gson(); // 使用 gson 库解析 JSON 数据
// 创建一个 TypeToken 的匿名子类对象,并调用对象的 getType()方法
Type listType = new TypeToken<List<List<Blog>>>() {
}.getType();
// Log.e("jsonStr",jsonStr);
List<List<Blog>> lists = gson.fromJson(jsonStr, listType);
List<Blog> expBlogList = new ArrayList<>();
expBlogList = (List<Blog>) lists.get(0);
expBlog = expBlogList;
// Log.e("expBlog的数据",String.valueOf(expBlogList));
BlogAdapter expAdapter = new BlogAdapter();
expAdapter.setRecnewsList(expBlog);
expRecyclerView.setAdapter(expAdapter);
}
});
}
private void getQuestionResponse(final String jsonStr) {
getActivity().runOnUiThread(new Runnable() {
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void run() {
Gson gson = new Gson(); // 使用 gson 库解析 JSON 数据
// 创建一个 TypeToken 的匿名子类对象,并调用对象的 getType()方法
// Log.e("questionListStr",jsonStr);
Type listType = new TypeToken<List<Question>>() {
}.getType();
List<Question> questionList = gson.fromJson(jsonStr, listType);
allQuestion = questionList;
QuestionAdapter questionAdapter = new QuestionAdapter();
questionAdapter.setQuestionList(allQuestion);
questionRecyclerView.setAdapter(questionAdapter);
}
});
}
@Override
public void onPause() {
super.onPause();
isPause = true; //记录页面已经被暂停
}
@Override
public void onResume() {
super.onResume();
if (isPause) { //判断是否暂停
isPause = false;
if (invitationCategoryTitleNum == 0) {
Map<String, String[]> paramMap = new HashMap<String, String[]>();
paramMap.put("channelList", new String[]{"全部"});
getAllBlogListRequest(paramMap);
BlogAdapter allAdapter = new BlogAdapter(allBlog);
allRecyclerView.setAdapter(allAdapter);
}else if(invitationCategoryTitleNum == 4) {
getQuestionListRequest();
QuestionAdapter questionAdapter = new QuestionAdapter(allQuestion, getContext());
questionRecyclerView.setAdapter(questionAdapter);
}else if(invitationCategoryTitleNum == 2) {
Map<String, String[]> paramMap = new HashMap<String, String[]>();
paramMap = new HashMap<String, String[]>();
paramMap.put("channelList", new String[]{"康复"});
getRecInvitationRequest(paramMap);
BlogAdapter recAdapter = new BlogAdapter(recBlog);
recRecyclerView.setAdapter(recAdapter);
}else if(invitationCategoryTitleNum == 3) {
Map<String, String[]> paramMap = new HashMap<String, String[]>();
paramMap = new HashMap<String, String[]>();
paramMap.put("channelList", new String[]{"扫雷"});
getBadListRequest(paramMap);
BlogAdapter badAdapter = new BlogAdapter(badBlog);
badRecyclerView.setAdapter(badAdapter);
}else if(invitationCategoryTitleNum == 1) {
Map<String, String[]> paramMap = new HashMap<String, String[]>();
paramMap = new HashMap<String, String[]>();
paramMap.put("channelList", new String[]{"经验"});
getExpListRequest(paramMap);
BlogAdapter expAdapter = new BlogAdapter(expBlog);
expRecyclerView.setAdapter(expAdapter);
}
}
}
}
}

@ -1,6 +1,7 @@
package com.example.leudaemialikeme.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -10,9 +11,11 @@ import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.leudaemialikeme.Activity.BaseActivity;
import com.example.leudaemialikeme.Adapter.MsgAdapter;
import com.example.leudaemialikeme.Model.Msg;
import com.example.leudaemialikeme.Model.Chat;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.service.ChatService;
import java.util.ArrayList;
import java.util.List;
@ -21,7 +24,8 @@ public class MessageChannelFragment extends Fragment {
private static final String ARG_CATEGORY_TITLE = "category_title";
private String messageCategoryTitle = "Default";
private TextView mTitleField;
private List<Msg> msgList = new ArrayList<Msg>();
private List<Chat> chatList = new ArrayList<Chat>();
private RecyclerView recyclerView;
public MessageChannelFragment() {
// Required empty public constructor
@ -51,19 +55,21 @@ public class MessageChannelFragment extends Fragment {
View view;
if (messageCategoryTitle.equals(" 私信 ")) {
view = inflater.inflate(R.layout.fragment_private_msg,container,false);
RecyclerView recyclerView = (RecyclerView)view.findViewById(R.id.list_private_msg);
recyclerView = view.findViewById(R.id.list_private_msg);
System.out.println("oncreateview:"+recyclerView);
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(layoutManager);
Log.d("记录","调用方法获取消息列表");
getMsgList();
MsgAdapter msgAdapter = new MsgAdapter(msgList);
MsgAdapter msgAdapter = new MsgAdapter(chatList);
recyclerView.setAdapter(msgAdapter);
} else if (messageCategoryTitle.equals(" 评论 ")) {
view = inflater.inflate(R.layout.fragment_comment, container, false);
} else if (messageCategoryTitle.equals(" 粉丝 ")) {
view = inflater.inflate(R.layout.fragment_fans, container, false);
} else if (messageCategoryTitle.equals(" 赞 ")) {
view = inflater.inflate(R.layout.fragment_nice, container, false);
} else if (messageCategoryTitle.equals(" 粉丝 ")) {
view = inflater.inflate(R.layout.fragment_fans, container, false);
} else {
view = inflater.inflate(R.layout.fragment_message_channel, container, false);
mTitleField = (TextView) view.findViewById(R.id.messageCategoryTitle);
@ -73,7 +79,32 @@ public class MessageChannelFragment extends Fragment {
}
private void getMsgList(){
Msg msg = new Msg(R.drawable.img_user1, "张三", " ");
msgList.add(msg);
ChatService chatService = new ChatService();
chatList = chatService.findChatList(BaseActivity.owner.getNetId());
Log.d("chatlist:", String.valueOf(chatList.size()));
}
// @Override
// public void onResume() {
// System.out.println("-----------------------");
// super.onResume();
// System.out.println("-----------------------");
// getMsgList();
// MsgAdapter adapter = new MsgAdapter(chatList);
// System.out.println("onresume:" + recyclerView);
// recyclerView.setAdapter(adapter);
// recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
// }
public void updateUi(){
getMsgList();
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
MsgAdapter adapter = new MsgAdapter(chatList);
recyclerView.setAdapter(adapter);
}
});
}
public String getMessageCategoryTitle(){
return messageCategoryTitle;
}
}

@ -72,8 +72,7 @@ public class MessageFragment extends Fragment implements ViewPager.OnPageChangeL
private void initViewPager() { //初始化ViewPager
FragmentManager fragmentManager = super.getActivity().getSupportFragmentManager();
// adapter=new MessagePageFragmentAdapter(fragmentManager, channelList);
adapter=new MessagePageFragmentAdapter(fragmentManager, channelList);
adapter = new MessagePageFragmentAdapter(fragmentManager, channelList);
//参数 channelList 将被适配器用来在动态切换碎片的时候实时创建碎片 //设置 ViewPager 的适配器
viewPager.setAdapter(adapter);
viewPager.setOffscreenPageLimit(2);//并设置预加载页数为2
@ -109,4 +108,7 @@ public class MessageFragment extends Fragment implements ViewPager.OnPageChangeL
int len=left+width/2-screenWidth/2;
hvChannel.smoothScrollTo(len,0);
}
public MessagePageFragmentAdapter getAdapter(){
return adapter;
}
}

@ -5,6 +5,7 @@ import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
@ -13,31 +14,31 @@ import androidx.fragment.app.Fragment;
import com.example.leudaemialikeme.Activity.APNActivity;
import com.example.leudaemialikeme.Activity.AboutActivity;
import com.example.leudaemialikeme.Activity.AttentionActivity;
import com.example.leudaemialikeme.Activity.BaseActivity;
import com.example.leudaemialikeme.Activity.CollectActivity;
import com.example.leudaemialikeme.Activity.ConcernedProblemActivity;
import com.example.leudaemialikeme.Activity.EventActivity;
import com.example.leudaemialikeme.Activity.HistoryActivity;
import com.example.leudaemialikeme.Activity.LoginActivity;
import com.example.leudaemialikeme.Activity.MdctRmdActivity;
import com.example.leudaemialikeme.Activity.MyInfoActivity;
import com.example.leudaemialikeme.Activity.MyQuestionActivity;
import com.example.leudaemialikeme.Activity.SafetyActivity;
import com.example.leudaemialikeme.Model.User;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.OkHttpUtil;
import com.google.gson.Gson;
/**
* A simple {@link Fragment} subclass.
* Use the {@link MyFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class MyFragment extends Fragment {
import java.io.IOException;
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
// TODO: Rename and change types of parameters
private String mParam1;
private String mParam2;
public class MyFragment extends Fragment {
private User user;
private TextView text_nickname;
public MyFragment() {
// Required empty public constructor
@ -46,10 +47,6 @@ public class MyFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
@ -58,9 +55,43 @@ public class MyFragment extends Fragment {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_my, container, false);
initClick(view);
text_nickname = view.findViewById(R.id.nickname);
getUser();
return view;
}
private void getUser() {
new Thread(new Runnable() {
@Override
public void run() {
try{
String url = LoginActivity.SERVER_URL+"/my-servlet?action=getUser&username="+ BaseActivity.owner.getUsername();
OkHttpUtil.asyGet(url, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String jsonStr = response.body().string();
Gson gson = new Gson();
user = gson.fromJson(jsonStr, User.class);
getActivity().runOnUiThread(new Runnable(){
@Override
public void run() {
text_nickname.setText(user.getUsername());
}
});
}
});
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
private void initClick(View view) {
//关注的问题,提醒和大事记的线性布局
LinearLayout remindLinear = view.findViewById(R.id.my_remind_linear);
@ -76,6 +107,19 @@ public class MyFragment extends Fragment {
TextView invitation = view.findViewById(R.id.my_invitation);
TextView consent = view.findViewById(R.id.my_consent);
TextView attention = view.findViewById(R.id.attention);
//个人信息更多
ImageView img_go_my_info = view.findViewById(R.id.img_go_my_info);
//个人信息管理跳转
img_go_my_info.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), MyInfoActivity.class);
intent.putExtra("user", user);
startActivity(intent);
}
});
//设置文本点击之后的跳转
answer.setOnClickListener(new View.OnClickListener() {
@Override

@ -1,10 +1,6 @@
package com.example.leudaemialikeme.Fragment;
import android.os.Bundle;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.DefaultItemAnimator;
@ -12,12 +8,31 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.example.leudaemialikeme.Adapter.CollectAdapter;
import com.example.leudaemialikeme.Model.Collect;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.leudaemialikeme.Activity.BaseActivity;
import com.example.leudaemialikeme.Activity.MainActivity;
import com.example.leudaemialikeme.Adapter.CollectNewsAdapter;
import com.example.leudaemialikeme.Model.News;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.OkHttpUtil;
import com.example.leudaemialikeme.Utils.TimeUtil;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.IOException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
/**
* A simple {@link Fragment} subclass.
@ -29,8 +44,9 @@ import java.util.List;
public class NewsCollectFragment extends Fragment {
private static final String ARG_CATEGORY_TITLE = "category_title";
private String collectCategoryTitle = "Default";
private List<Collect> collectList = new ArrayList<>();
private List<News> collectList = new ArrayList<>();
private SwipeRefreshLayout mSwipeRefreshLayout;
private RecyclerView newsCollectrecycleView;
public NewsCollectFragment() {
// Required empty public constructor
@ -60,14 +76,14 @@ public class NewsCollectFragment extends Fragment {
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_news_collect, container, false);
getData();//获得数据
RecyclerView recycleView = (RecyclerView) view.findViewById(R.id.APNList);//获得视图
newsCollectrecycleView = (RecyclerView) view.findViewById(R.id.newsCollectList);//获得视图
LinearLayoutManager layoutManager;
layoutManager = new LinearLayoutManager(getActivity());
recycleView.setLayoutManager(layoutManager);//建立线性布局
final CollectAdapter adapter = new CollectAdapter(collectList);//创建适配器
recycleView.setItemAnimator(new DefaultItemAnimator());//设置动画效果
recycleView.setAdapter(adapter);
newsCollectrecycleView.setLayoutManager(layoutManager);//建立线性布局
final CollectNewsAdapter adapter = new CollectNewsAdapter(collectList);//创建适配器
newsCollectrecycleView.setItemAnimator(new DefaultItemAnimator());//设置动画效果
newsCollectrecycleView.setAdapter(adapter);
getData();//获得数据
mSwipeRefreshLayout = view.findViewById(R.id.refresh_layout);
// mTextView = view.findViewById(R.id.tv_pull_down_refresh);
handleDownPullUpdate();
@ -98,11 +114,50 @@ public class NewsCollectFragment extends Fragment {
}
private void getData(){
Collect collect1 = new Collect("临时测算",R.mipmap.img_my_person,"病因很重要","加油加油"
,R.mipmap.img_search,"12浏览");
collectList.add(collect1);
Collect collect2 = new Collect("临时测算",R.mipmap.img_my_person,"病因很重要","加油加油"
,R.mipmap.img_search,"12浏览");
collectList.add(collect2);
// News collect1 = new News(1,1,"1","临时测试","能解决的!",TimeUtil.stringToTime("2022-01-07 12:12:12"),3);
// collectList.add(collect1);
// News collect2 = new News(1,1,"1","临时测试2","能解决的!",TimeUtil.stringToTime("2022-01-07 12:12:12"),5);
// collectList.add(collect2);
new Thread(new Runnable() {
@Override
public void run() {
try{
String url = MainActivity.SERVER_URL+"/my-servlet?action=collectNews&uid="+BaseActivity.owner.getNetId()+"&type="+1;
Callback callback = new Callback() {
@Override
public void onFailure(Call call, IOException e) {
System.out.println("-----ERROR----");
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String jsonStr = response.body().string();
Gson gson = new Gson();
Map<String, String> jsonMap= gson.fromJson(jsonStr, new TypeToken<Map<String, String>>() {}.getType());
final String message=(String) jsonMap.get("message");
if (message.equals("success")) {
List<News> newsList = gson.fromJson(jsonMap.get("newsList"), new TypeToken <List<News>>(){}.getType());
for(int i=0;i<newsList.size();i++){
News startNews = newsList.get(i);
int nid = startNews.getNid();
int sid = startNews.getSid();
String stype = startNews.getStype();
String stittle = startNews.getStittle();
String scontent = startNews.getScontent();
Timestamp stime = startNews.getStime();
int sbrowseNum = startNews.getSbrowseNum();
News endNews = new News(nid,sid,stype,stittle,scontent,stime,sbrowseNum);
collectList.add(endNews);
}
}
}
};
OkHttpUtil.asyGet(url,callback);
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
}

@ -0,0 +1,164 @@
package com.example.leudaemialikeme.Fragment;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.leudaemialikeme.Activity.BaseActivity;
import com.example.leudaemialikeme.Activity.MainActivity;
import com.example.leudaemialikeme.Adapter.HistoryNewsAdapter;
import com.example.leudaemialikeme.Model.News;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.OkHttpUtil;
import com.example.leudaemialikeme.Utils.TimeUtil;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.IOException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
/**
* A simple {@link Fragment} subclass.
* Activities that contain this fragment must implement the
* to handle interaction events.
* Use the {@link NewsHistoryFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class NewsHistoryFragment extends Fragment {
private static final String ARG_CATEGORY_TITLE = "category_title";
private String collectCategoryTitle = "Default";
private List<News> collectList = new ArrayList<>();
private SwipeRefreshLayout mSwipeRefreshLayout;
public NewsHistoryFragment() {
// Required empty public constructor
}
public static NewsHistoryFragment newInstance(String collectCategoryTitle) {
Bundle args = new Bundle();
args.putString(ARG_CATEGORY_TITLE, collectCategoryTitle);
NewsHistoryFragment fragment = new NewsHistoryFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
collectCategoryTitle = (String) getArguments().getString(ARG_CATEGORY_TITLE);
}catch (java.lang.NullPointerException e)
{
System.out.println("TestFragment getArg error!");
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_news_history, container, false);
getData();//获得数据
RecyclerView recycleView = (RecyclerView) view.findViewById(R.id.newsHistoryList);//获得视图
LinearLayoutManager layoutManager;
layoutManager = new LinearLayoutManager(getActivity());
recycleView.setLayoutManager(layoutManager);//建立线性布局
final HistoryNewsAdapter adapter = new HistoryNewsAdapter(collectList);//创建适配器
recycleView.setItemAnimator(new DefaultItemAnimator());//设置动画效果
recycleView.setAdapter(adapter);
mSwipeRefreshLayout = view.findViewById(R.id.refresh_layout);
// mTextView = view.findViewById(R.id.tv_pull_down_refresh);
handleDownPullUpdate();
return view;
}
private void handleDownPullUpdate() {
mSwipeRefreshLayout.setEnabled(true);
mSwipeRefreshLayout.setColorSchemeResources(R.color.colorAccent,R.color.colorPrimary,R.color.light_grey);
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
//不再显示提示正在刷新和刷新成功
// mTextView.setText("正在刷新...");
//被刷新时的操作
//更新UI
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//更新成功后设置UI停止更新
// mTextView.setText("刷新成功!!!");
mSwipeRefreshLayout.setRefreshing(false);
}
},3000);
}
});
}
private void getData(){
// News collect1 = new News(1,1,"1","临时测试浏览记录版","能解决的!", TimeUtil.stringToTime("2022-01-07 12:12:12"),3);
// collectList.add(collect1);
// News collect2 = new News(1,1,"1","临时测试2浏览记录版","能解决的!",TimeUtil.stringToTime("2022-01-07 12:12:12"),5);
// collectList.add(collect2);
new Thread(new Runnable() {
@Override
public void run() {
try{
String url = MainActivity.SERVER_URL+"/my-servlet?action=historyNews&uid="+ BaseActivity.owner.getNetId()+"&type="+1;
Callback callback = new Callback() {
@Override
public void onFailure(Call call, IOException e) {
System.out.println("-----ERROR----");
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String jsonStr = response.body().string();
Gson gson = new Gson();
Map<String, String> jsonMap= gson.fromJson(jsonStr, new TypeToken<Map<String, String>>() {}.getType());
final String message=(String) jsonMap.get("message");
if (message.equals("success")) {
List<News> newsList = gson.fromJson(jsonMap.get("newsList"), new TypeToken <List<News>>(){}.getType());
for(int i=0;i<newsList.size();i++){
News startNews = newsList.get(i);
int nid = startNews.getNid();
int sid = startNews.getSid();
String stype = startNews.getStype();
String stittle = startNews.getStittle();
String scontent = startNews.getScontent();
Timestamp stime = startNews.getStime();
int sbrowseNum = startNews.getSbrowseNum();
News endNews = new News(nid,sid,stype,stittle,scontent,stime,sbrowseNum);
collectList.add(endNews);
}
}
}
};
OkHttpUtil.asyGet(url,callback);
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
}

@ -0,0 +1,163 @@
package com.example.leudaemialikeme.Fragment;
import android.os.Bundle;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.example.leudaemialikeme.Activity.BaseActivity;
import com.example.leudaemialikeme.Activity.MainActivity;
import com.example.leudaemialikeme.Adapter.HistoryQuestionAdapter;
import com.example.leudaemialikeme.Model.Question;
import com.example.leudaemialikeme.R;
import com.example.leudaemialikeme.Utils.OkHttpUtil;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
/**
* A simple {@link Fragment} subclass.
* Activities that contain this fragment must implement the
* to handle interaction events.
* Use the {@link QuestionHistoryFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class QuestionHistoryFragment extends Fragment {
private static final String ARG_CATEGORY_TITLE = "category_title";
private String collectCategoryTitle = "Default";
private List<Question> questionAllList = new ArrayList<>();
private SwipeRefreshLayout mSwipeRefreshLayout;
private RecyclerView recyclerView;
private boolean isPause = false;
public QuestionHistoryFragment() {
// Required empty public constructor
}
public static QuestionHistoryFragment newInstance(String collectCategoryTitle) {
Bundle args = new Bundle();
args.putString(ARG_CATEGORY_TITLE, collectCategoryTitle);
QuestionHistoryFragment fragment = new QuestionHistoryFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
collectCategoryTitle = (String) getArguments().getString(ARG_CATEGORY_TITLE);
}catch (java.lang.NullPointerException e)
{
System.out.println("TestFragment getArg error!");
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_question_history, container, false);
recyclerView = (RecyclerView) view.findViewById(R.id.questionHistoryList);//获得视图
LinearLayoutManager layoutManager;
layoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(layoutManager);//建立线性布局
final HistoryQuestionAdapter adapter = new HistoryQuestionAdapter(questionAllList, getContext());//创建适配器
recyclerView.setItemAnimator(new DefaultItemAnimator());//设置动画效果
recyclerView.setAdapter(adapter);
mSwipeRefreshLayout = view.findViewById(R.id.refresh_layout);
// mTextView = view.findViewById(R.id.tv_pull_down_refresh);
getData();//获得数据
handleDownPullUpdate();
return view;
}
private void handleDownPullUpdate() {
mSwipeRefreshLayout.setEnabled(true);
mSwipeRefreshLayout.setColorSchemeResources(R.color.colorAccent,R.color.colorPrimary,R.color.light_grey);
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
//不再显示提示正在刷新和刷新成功
// mTextView.setText("正在刷新...");
//被刷新时的操作
//更新UI
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//更新成功后设置UI停止更新
// mTextView.setText("刷新成功!!!");
mSwipeRefreshLayout.setRefreshing(false);
}
},3000);
}
});
}
private void getData() {
new Thread(new Runnable() {
@Override
public void run() {
try{
String url = MainActivity.SERVER_URL+"/my-servlet?action=historyQuestion&uid="+ BaseActivity.owner.getNetId()+"&type="+3;
Callback callback = new Callback() {
@Override
public void onFailure(Call call, IOException e) {
System.out.println("-----ERROR----");
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String jsonStr = response.body().string();
Gson gson = new Gson();
Map<String, String> jsonMap= gson.fromJson(jsonStr, new TypeToken<Map<String, String>>() {}.getType());
final String message=(String) jsonMap.get("message");
if (message.equals("success")) {
List<Question> questionList = gson.fromJson(jsonMap.get("questionList"), new TypeToken <List<Question>>(){}.getType());
questionAllList = questionList;
HistoryQuestionAdapter adapter = new HistoryQuestionAdapter(questionAllList, getContext());//创建适配器
recyclerView.setAdapter(adapter);
}
}
};
OkHttpUtil.asyGet(url,callback);
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
@Override
public void onPause() {
super.onPause();
isPause = true; //记录页面已经被暂停
}
@Override
public void onResume() {
super.onResume();
if (isPause){ //判断是否暂停
isPause = false;
getData();
HistoryQuestionAdapter adapter = new HistoryQuestionAdapter(questionAllList, getContext());//创建适配器
recyclerView.setAdapter(adapter);
}
}
}

@ -0,0 +1,43 @@
package com.example.leudaemialikeme.Model;
import java.sql.Timestamp;
public class AnswerItemView {
private String answerAuthor;
private String answerContent;
private Timestamp answerTime;
public AnswerItemView(){
}
public AnswerItemView(String answerAuthor, String answerContent, Timestamp answerTime) {
this.answerAuthor = answerAuthor;
this.answerContent = answerContent;
this.answerTime = answerTime;
}
public String getAnswerAuthor() {
return answerAuthor;
}
public void setAnswerAuthor(String answerAuthor) {
this.answerAuthor = answerAuthor;
}
public String getAnswerContent() {
return answerContent;
}
public void setAnswerContent(String answerContent) {
this.answerContent = answerContent;
}
public Timestamp getAnswerTime() {
return answerTime;
}
public void setAnswerTime(Timestamp answerTime) {
this.answerTime = answerTime;
}
}

@ -0,0 +1,131 @@
package com.example.leudaemialikeme.Model;
import java.io.Serializable;
import java.sql.Timestamp;
public class Blog implements Serializable {
private static final long serialVersionUID = 1L;
private int bid;
private int uid;
private String btype;
private String btittle;
private String bcontent;
private Timestamp btime;
private int blikeNum;
private int bcollectNum;
private int bbrowse;
private int flag;
public Blog() {
}
public Blog(int bid,int uid,String btype,String btittle,String bcontent,Timestamp btime,int blikeNum,
int bcollectNum,int bbrowse,int flag) {
this.bid=bid;
this.uid=uid;
this.btype=btype;
this.btittle=btittle;
this.bcontent=bcontent;
this.btime=btime;
this.blikeNum=blikeNum;
this.bcollectNum=bcollectNum;
this.bbrowse=bbrowse;
this.flag=flag;
}
public Blog(int uid,String btype,String btittle,String bcontent,Timestamp btime,int blikeNum,
int bcollectNum,int bbrowse,int flag) {
this.uid=uid;
this.btype=btype;
this.btittle=btittle;
this.bcontent=bcontent;
this.btime=btime;
this.blikeNum=blikeNum;
this.bcollectNum=bcollectNum;
this.bbrowse=bbrowse;
this.flag=flag;
}
public void setUid(int uid) {
this.uid=uid;
}
public int getUid() {
return uid;
}
public void setBid(int bid) {
this.bid=bid;
}
public int getBid() {
return bid;
}
public void setBtype(String btype) {
this.btype=btype;
}
public String getBtype() {
return btype;
}
public void setBtittle(String btittle) {
this.btittle=btittle;
}
public String getBtittle() {
return btittle;
}
public void setBcontent(String bcontent) {
this.bcontent=bcontent;
}
public String getBcontent() {
return bcontent;
}
public Timestamp getBtime() {
return btime;
}
public void setBtime(Timestamp btime) {
this.btime=btime;
}
public void setBlikeNum(int blikeNum) {
this.blikeNum=blikeNum;
}
public int getBlikeNum() {
return blikeNum;
}
public void setBcollectNum(int bcollectNum) {
this.bcollectNum=bcollectNum;
}
public int getBcollectNum() {
return bcollectNum;
}
public void setBbrowse(int bbrowse) {
this.bbrowse=bbrowse;
}
public int getBbrowse() {
return bbrowse;
}
public int getFlag() {
return flag;
}
public void setFlag(int flag) {
this.flag=flag;
}
}

@ -0,0 +1,43 @@
package com.example.leudaemialikeme.Model;
import java.io.Serializable;
public class Browse implements Serializable{
private static final long serialVersionUID = 1L;
private int id;
private int uid;
private int type;
public void setId(int id) {
this.id=id;
}
public int getId() {
return id;
}
public void setUid(int uid) {
this.uid=uid;
}
public int getUid() {
return uid;
}
public void setType(int type) {
this.type=type;
}
public int getType() {
return type;
}
public Browse(int id,int uid,int type) {
this.id=id;
this.uid=uid;
this.type=type;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
}

@ -0,0 +1,63 @@
package com.example.leudaemialikeme.Model;
import org.litepal.crud.LitePalSupport;
public class Clock extends LitePalSupport {
public static final int clock_open = 1;
public static final int clock_close = 0;
String hour;
String minute;
String name;
String dosage;
int ClockType;
public Clock(String hour, String minute, String name, String dosage, int clockType) {
this.hour = hour;
this.minute = minute;
this.name = name;
this.dosage = dosage;
ClockType = clockType;
}
public Clock(){}
public String getMinute() {
return minute;
}
public String getHour() {
return hour;
}
public void setHour(String hour) {
this.hour = hour;
}
public void setMinute(String minute) {
this.minute = minute;
}
public int getClockType() {
return ClockType;
}
public void setClockType(int clockType) {
ClockType = clockType;
}
public String getName() {
return name;
}
public String getDosage() {
return dosage;
}
public void setName(String name) {
this.name = name;
}
public void setDosage(String dosage) {
this.dosage = dosage;
}
}

@ -1,72 +0,0 @@
package com.example.leudaemialikeme.Model;
import java.io.Serializable;
public class Collect implements Serializable {
private static final long serialVersionUID = 1L;
private String collectTitle;
private int collectIconId;
private String collectName;
private String collectContent;
private int collectImgId;
private String collectRead;
public Collect(String collectTitle, int collectIconId, String collectName,
String collectContent, int collectImgId, String collectRead){
this.collectTitle = collectTitle;
this.collectIconId = collectIconId;
this.collectName = collectName;
this.collectContent = collectContent;
this.collectRead = collectRead;
this.collectImgId = collectImgId;
}
public String getCollectTitle() {
return collectTitle;
}
public void setCollectTitle(String collectTitle) {
this.collectTitle = collectTitle;
}
public int getCollectIconId() {
return collectIconId;
}
public void setCollectIconId(int collectIconId) {
this.collectIconId = collectIconId;
}
public String getCollectName() {
return collectName;
}
public void setCollectName(String collectName) {
this.collectName = collectName;
}
public String getCollectContent() {
return collectContent;
}
public void setCollectContent(String collectContent) {
this.collectContent = collectContent;
}
public int getCollectImgId() {
return collectImgId;
}
public void setCollectImgId(int collectImgId) {
this.collectImgId = collectImgId;
}
public String getCollectRead() {
return collectRead;
}
public void setCollectRead(String collectRead) {
this.collectRead = collectRead;
}
}

@ -0,0 +1,80 @@
package com.example.leudaemialikeme.Model;
import java.io.Serializable;
import java.sql.Timestamp;
public class Comment implements Serializable {
private static final long serialVersionUID = 1L;
private int cid;
private int id;
private String uName;
private int uid;
private String content;
private Timestamp time;
private int type; //评论1/回答2
public Comment(){
}
public Comment(int id,int cid,String name,int uid,String content,Timestamp time,int type){
this.id=id;
this.cid=cid;
this.uName=name;
this.uid=uid;
this.content=content;
this.time=time;
this.type=type;
}
public Comment(int id,String name,Timestamp time,int uid,String content,int type){
this.time=time;
this.id=id;
this.uName=name;
this.uid=uid;
this.content=content;
this.type=type;
}
public int getId(){
return id;
}
public void setId(int id){
this.id=id;
}
public int getCid(){
return cid;
}
public void setCid(int cid){
this.cid=cid;
}
public String getUName(){
return uName;
}
public void setUName(String name){
this.uName=name;
}
public int getUid(){
return uid;
}
public void setUid(int uid){
this.uid=uid;
}
public String getContent(){
return content;
}
public void setContent(String content){
this.content=content;
}
public Timestamp getTime(){
return time;
}
public void setTime(Timestamp time){
this.time=time;
}
public int getType(){
return type;
}
public void setType(int type){
this.type=type;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
}

@ -1,21 +1,34 @@
package com.example.leudaemialikeme.Model;
import org.litepal.annotation.Column;
import org.litepal.crud.LitePalSupport;
import java.io.Serializable;
public class Event implements Serializable {
public class Event extends LitePalSupport implements Serializable {
private static final long serialVersionUID = 1L;
//声明所有的变量
private String event_day;
private String event_month;
@Column(unique = true)
private String event_info;
private String event_place;
private String event_doctor_name;
private String event_time;
private String event_create_time;
public Event(){}
public Event(String event_day,String event_month,String event_info,String event_time){
public Event(String event_day, String event_month, String event_info, String event_place, String event_doctor_name, String event_time, String event_create_time) {
this.event_day = event_day;
this.event_month = event_month;
this.event_info = event_info;
this.event_month =event_month;
this.event_place = event_place;
this.event_doctor_name = event_doctor_name;
this.event_time = event_time;
this.event_create_time = event_create_time;
}
public String getEvent_day() {
return event_day;
}
@ -47,4 +60,28 @@ public class Event implements Serializable {
public void setEvent_time(String event_time) {
this.event_time = event_time;
}
public String getEvent_place() {
return event_place;
}
public String getEvent_doctor_name() {
return event_doctor_name;
}
public String getEvent_create_time() {
return event_create_time;
}
public void setEvent_place(String event_place) {
this.event_place = event_place;
}
public void setEvent_doctor_name(String event_doctor_name) {
this.event_doctor_name = event_doctor_name;
}
public void setEvent_create_time(String event_create_time) {
this.event_create_time = event_create_time;
}
}

@ -0,0 +1,66 @@
package com.example.leudaemialikeme.Model;
import org.litepal.crud.LitePalSupport;
public class Friend extends LitePalSupport {
private int id;
private String username;
private int netId;
private int ownerNetId;
private Boolean isChat;
public Friend(){
super();
}
public Friend(int netId, String username){
this.netId = netId;
this.username = username;
this.isChat=true;
}
public Friend(int netId, String username, int ownerNetId){
this.netId = netId; //聊天人的ID
this.username = username; //聊天人的用户名
this.ownerNetId = ownerNetId; //本机用户的ID
this.isChat=true;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getNetId() {
return netId;
}
public void setNetId(int netId) {
this.netId = netId;
}
public int getOwnerNetId() {
return ownerNetId;
}
public void setOwnerNetId(int ownerNetId) {
this.ownerNetId = ownerNetId;
}
public Boolean getChat() {
return isChat;
}
public void setChat(Boolean chat) {
isChat = chat;
}
}

@ -0,0 +1,15 @@
package com.example.leudaemialikeme.Model;
import java.util.ArrayList;
public class MessageItemView {
public Friend friend;
public Owner owner;
public ArrayList<Message> messages;
public MessageItemView(Friend friend,Owner owner,ArrayList<Message> messages){
this.friend=friend;
this.owner=owner;
this.messages=messages;
}
}

@ -0,0 +1,53 @@
package com.example.leudaemialikeme.Model;
import java.sql.Timestamp;
public class MyAnswerItemView {
private int qid;
private String qtitle;
private String acontent;
private Timestamp answerTime;
public MyAnswerItemView(){
}
public MyAnswerItemView(int qid, String qtitle, String acontent, Timestamp answerTime) {
this.qid = qid;
this.qtitle = qtitle;
this.acontent = acontent;
this.answerTime = answerTime;
}
public int getQid() {
return qid;
}
public void setQid(int qid) {
this.qid = qid;
}
public String getQtitle() {
return qtitle;
}
public void setQtitle(String qtitle) {
this.qtitle = qtitle;
}
public String getAcontent() {
return acontent;
}
public void setAcontent(String acontent) {
this.acontent = acontent;
}
public Timestamp getAnswerTime() {
return answerTime;
}
public void setAnswerTime(Timestamp answerTime) {
this.answerTime = answerTime;
}
}

@ -1,41 +0,0 @@
package com.example.leudaemialikeme.Model;
import java.io.Serializable;
public class MyQuestion implements Serializable {
private static final long serialVersionUID = 1L;
//声明所有变量
private String MyQuestionInfo;
private String MyQuestionRead;
private String MyQuestionTime;
public MyQuestion(String MyQuestionInfo,String MyQuestionRead,String MyQuestionTime){
this. MyQuestionInfo = MyQuestionInfo;
this.MyQuestionRead = MyQuestionRead;
this.MyQuestionTime = MyQuestionTime;
}
public String getMyQuestionInfo() {
return MyQuestionInfo;
}
public void setMyQuestionInfo(String myQuestionInfo) {
MyQuestionInfo = myQuestionInfo;
}
public String getMyQuestionRead() {
return MyQuestionRead;
}
public void setMyQuestionRead(String myQuestionRead) {
MyQuestionRead = myQuestionRead;
}
public String getMyQuestionTime() {
return MyQuestionTime;
}
public void setMyQuestionTime(String myQuestionTime) {
MyQuestionTime = myQuestionTime;
}
}

@ -5,81 +5,82 @@ import java.sql.Timestamp;
public class News implements Serializable {
private static final long serialVersionUID = 1L;
private int nid;//资讯编号
private int sid;//小编的编号
private String stype;//资讯类型
private String stittle;//资讯标题
private String scontent;//资讯内容
private Timestamp stime;//发布时间
private int sbrowseNum;//浏览量
private int nid;
private int sid;
private String stype;
private String stittle;
private String scontent;
private Timestamp stime;
private int sbrowseNum;
public News(){
}
public News(int nid,String stype,String stittle,String scontent,Timestamp stime,int sbrowseNum) {
this.nid=nid;
this.stype=stype;
this.stittle=stittle;
this.scontent=scontent;
this.stime=stime;
this.sbrowseNum=sbrowseNum;
public News(int nid, int sid, String stype, String stittle, String scontent, Timestamp stime, int sbrowseNum) {
this.nid = nid;
this.sid = sid;
this.stype = stype;
this.stittle = stittle;
this.scontent = scontent;
this.stime = stime;
this.sbrowseNum = sbrowseNum;
}
public int getNid() {
return nid;
}
public void setNid(int nid) {
this.nid = nid;
}
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getStype() {
return stype;
}
public void setStype(String stype) {
this.stype = stype;
}
public String getStittle() {
return stittle;
}
public void setStittle(String stittle) {
this.stittle = stittle;
}
public String getScontent() {
return scontent;
}
public void setScontent(String scontent) {
this.scontent = scontent;
public int getSbrowseNum() {
return sbrowseNum;
}
public Timestamp getStime() {
return stime;
}
public void setStime(Timestamp stime) {
this.stime = stime;
public void setNid(int nid) {
this.nid = nid;
}
public int getSbrowseNum() {
return sbrowseNum;
public void setSid(int sid) {
this.sid = sid;
}
public void setSbrowseNum(int sbrowseNum) {
this.sbrowseNum = sbrowseNum;
public void setStype(String stype) {
this.stype = stype;
}
public static long getSerialversionuid() {
return serialVersionUID;
public void setStittle(String stittle) {
this.stittle = stittle;
}
public void setScontent(String scontent) {
this.scontent = scontent;
}
public void setStime(Timestamp stime) {
this.stime = stime;
}
public void setSbrowseNum(int sbrowseNum) {
this.sbrowseNum = sbrowseNum;
}
}

@ -4,7 +4,7 @@ import org.litepal.annotation.Column;
import org.litepal.crud.LitePalSupport;
public class Owner extends LitePalSupport {
private int id; //本地数据库自增id
private int id=1; //本地数据库自增id
@Column(unique = true)
private int netId; //mysql自增id
@Column(unique = true)

@ -1,41 +1,98 @@
package com.example.leudaemialikeme.Model;
import java.io.Serializable;
import java.sql.Timestamp;
public class Question implements Serializable {
private static final long serialVersionUID = 1L;
//声明所有变量
private String questionInfo;
private String questionRead;
private String questionTime;
private int qid;
private int uid;
private String qtittle;
private String qcontent;
private Timestamp qtime;
private int qfollowNum;
private int qanswerNum;
private int qbrowseNum;
private int flag;
public Question(String questionInfo,String questionRead,String questionTime){
this. questionInfo = questionInfo;
this.questionRead = questionRead;
this.questionTime = questionTime;
public Question() {}
public Question(int uid,String qtitle,String qcontent,Timestamp qtime,
int qfollowNum,int qanswerNum,int qbrowseNum,int flag) {
this.uid=uid;
this.qtittle=qtitle;
this.qcontent=qcontent;
this.qtime=qtime;
this.qfollowNum=qfollowNum;
this.qanswerNum=qanswerNum;
this.qbrowseNum=qbrowseNum;
this.flag=flag;
}
public String getQuestionInfo() {
return questionInfo;
public Question(int qid, int uid, String qtittle, String qcontent, Timestamp timestamp, int qfollowNum, int qanswerNum,
int qbrowseNum, int flag) {
super();
this.qid = qid;
this.uid = uid;
this.qtittle = qtittle;
this.qcontent = qcontent;
this.qtime = timestamp;
this.qfollowNum = qfollowNum;
this.qanswerNum = qanswerNum;
this.qbrowseNum = qbrowseNum;
this.flag = flag;
}
public void setQuestionInfo(String questionInfo) {
this.questionInfo = questionInfo;
public int getQid() {
return qid;
}
public String getQuestionRead() {
return questionRead;
public void setQid(int qid) {
this.qid = qid;
}
public void setQuestionRead(String questionRead) {
this.questionRead = questionRead;
public int getUid() {
return uid;
}
public String getQuestionTime() {
return questionTime;
public void setUid(int uid) {
this.uid = uid;
}
public void setQuestionTime(String questionTime) {
this.questionTime = questionTime;
public String getQtittle() {
return qtittle;
}
public void setQtittle(String qtittle) {
this.qtittle = qtittle;
}
public String getQcontent() {
return qcontent;
}
public void setQcontent(String qcontent) {
this.qcontent = qcontent;
}
public Timestamp getQtime() {
return qtime;
}
public void setQtime(Timestamp qtime) {
this.qtime = qtime;
}
public int getQfollowNum() {
return qfollowNum;
}
public void setQfollowNum(int qfollowNum) {
this.qfollowNum = qfollowNum;
}
public int getQanswerNum() {
return qanswerNum;
}
public void setQanswerNum(int qanswerNum) {
this.qanswerNum = qanswerNum;
}
public int getQbrowseNum() {
return qbrowseNum;
}
public void setQbrowseNum(int qbrowseNum) {
this.qbrowseNum = qbrowseNum;
}
public int getFlag() {
return flag;
}
public void setFlag(int flag) {
this.flag = flag;
}
}

@ -1,6 +1,8 @@
package com.example.leudaemialikeme.Model;
public class User {
import java.io.Serializable;
public class User implements Serializable {
private int iduser;
private String username;
private String password;

@ -1,37 +1,16 @@
package com.example.leudaemialikeme.Utils;
import com.example.leudaemialikeme.Model.News;
import java.util.ArrayList;
import java.util.List;
import com.example.leudaemialikeme.Model.User;
public class Data extends android.app.Application {
public int uid=1;
public String id="430481200101220131";
public String name="abc";
public int getUid(){
return uid;
private User user=new User(1,"123","123","13877673546","女");
// private User user;
public void setUser(User user){
this.user=user;
}
public void setUid(int uid){
this.uid= uid;
public User getUser(){
return user;
}
public String getId(){
return this.id;
}
public void setId(String id){
this.id= id;
}
//1.6下午两点加的
private List<News> newsList =new ArrayList<>();
public void setNewsList(List<News> newsList){
this.newsList=newsList;
}
//下午五点加的
public List<News> getNewsList() {
return this.newsList ;
}
}

@ -5,6 +5,7 @@ import android.util.Log;
import com.google.gson.Gson;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import okhttp3.Callback;
import okhttp3.FormBody;
@ -14,7 +15,14 @@ import okhttp3.RequestBody;
import okhttp3.Response;
public class OkHttpUtil {
private static OkHttpClient client = new OkHttpClient();
// private static OkHttpClient client = new OkHttpClient();
private static OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(500, TimeUnit.SECONDS)
.readTimeout(500, TimeUnit.SECONDS)
.build();
private static Gson gson = new Gson();
//同步GET请求
public static String synGet(String url){
@ -33,7 +41,6 @@ public class OkHttpUtil {
//同步POST请求
public static String synPost(String url, Map params){
try{
String jsonStr= gson.toJson(params);
RequestBody requestBody=new FormBody.Builder()
.add("jsonStr",jsonStr)
@ -51,6 +58,7 @@ public class OkHttpUtil {
return "error";
}
}
//异步GET请求
public static void asyGet(String url, Callback callback){
try{

@ -0,0 +1,54 @@
package com.example.leudaemialikeme.service;
import android.util.Log;
import com.example.leudaemialikeme.Dao.FriendDao;
import com.example.leudaemialikeme.Dao.MessageDao;
import com.example.leudaemialikeme.Model.Chat;
import com.example.leudaemialikeme.Model.Friend;
import com.example.leudaemialikeme.Model.Message;
import com.example.leudaemialikeme.Utils.TimeUtil;
import java.sql.Timestamp;
import java.util.ArrayList;
public class ChatService {
private FriendDao friendDao;
private MessageDao messageDao;
public ChatService(){
this.friendDao=new FriendDao();
this.messageDao=new MessageDao();
}
//接收消息后进行发送者的判断,如果该消息不是本地同步的好友发送的,则先将消息保存,然后发送好友同步请求,然后再进行聊天列表的展示
//这里需要先进行未读消息的朋友判断改变isChat状态然后再进行展示
public ArrayList<Chat> findChatList(int ownerNetId){
Log.d("记录","开始获取消息列表");
ArrayList<Friend> isChatFriends = friendDao.findChatFriendList(ownerNetId);
Log.d("chatservice","ischatfriends:"+isChatFriends.size());
ArrayList<Chat> chats = new ArrayList<>();
for (Friend friend : isChatFriends){
Message message = messageDao.findLastMessage(friend.getNetId(),ownerNetId);
Log.d("chatservice","lastmessage:"+message);
Chat chat;
if (message == null){
chat = new Chat(friend.getNetId(),friend.getUsername(),"",1,"" );
}else{
String time= TimeUtil.timeToString(new Timestamp(message.getCreateTime()));
/****/
String lastMessage="";
if (message.getMessageType()==1){
lastMessage=message.getContent();
}else {
lastMessage="[图片]";
}
/****/
chat = new Chat(friend.getNetId(),friend.getUsername(),lastMessage,message.getFlag(),time);
}
chats.add(chat);
}
return chats;
}
}

@ -2,20 +2,29 @@ package com.example.leudaemialikeme.service;
import android.app.Activity;
import android.content.Intent;
import android.os.Build;
import android.util.Log;
import android.widget.Toast;
import com.example.leudaemialikeme.Activity.BaseActivity;
import androidx.annotation.RequiresApi;
import com.example.leudaemialikeme.Activity.ChatActivity;
import com.example.leudaemialikeme.Activity.MainActivity;
import com.example.leudaemialikeme.Controller.ActivityController;
import com.example.leudaemialikeme.Fragment.MessageChannelFragment;
import com.example.leudaemialikeme.Fragment.MessageFragment;
import com.example.leudaemialikeme.Model.Message;
import com.example.leudaemialikeme.Utils.OkHttpUtil;
import com.example.leudaemialikeme.R;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import org.java_websocket.drafts.Draft_6455;
import org.java_websocket.handshake.ServerHandshake;
import java.net.URI;
import java.sql.Timestamp;
import java.util.Map;
import java.util.Objects;
public class WebSocketClient extends org.java_websocket.client.WebSocketClient {
@ -28,6 +37,7 @@ public class WebSocketClient extends org.java_websocket.client.WebSocketClient {
public static final int MSG_TEXT=1;
public static final int MSG_IMAGE=2;
public static final int MSG_SYSTEM=3;
private MainActivity mainActivity;
public WebSocketClient(URI serverURI){
@ -39,50 +49,45 @@ public class WebSocketClient extends org.java_websocket.client.WebSocketClient {
Log.d("WS","链接开启");
}
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void onMessage(String message){
try {
// friendDao=new FriendDao();
Log.d("WS",message);
Log.d("WS",message+" onMessage()回调");
//提取消息
Message unReadMsg= gson.fromJson(message, Message.class);
String content=(String) unReadMsg.getContent();
int messageType=(int)unReadMsg.getMessageType();
int receiverId=(int)unReadMsg.getReceiverNetId();
int senderId=(int)unReadMsg.getSenderNetId();
long createTime=(long) unReadMsg.getCreateTime();
Map<String, String> jsonMap = gson.fromJson(message, new TypeToken<Map<String, String>>() {}.getType());
String content = jsonMap.get("content");
int messageType = Integer.parseInt(Objects.requireNonNull(jsonMap.get("messageType")));
int receiverId = Integer.parseInt(Objects.requireNonNull(jsonMap.get("receiverNetId")));
int senderId = Integer.parseInt(Objects.requireNonNull(jsonMap.get("senderNetId")));
long createTime = Timestamp.valueOf(jsonMap.get("createTime")).getTime();
Message newMessage=new Message(senderId,receiverId,messageType, content, createTime);
Log.d("刷新","获取到对面发送的消息");
//获取当前活动对象
currentActivity= ActivityController.getCurrentActivity();
// //判断消息发送者是否为本地好友,如果不是本地好友,需要进行好友同步,0表示是系统发送的消息
// if (senderId!=0){
// Friend friend=friendDao.findByNetId(senderId,receiverId);
// if (friend==null){
// getNewFriends(senderId,receiverId);
// }
// }
//根据消息类型进行判断
/****/
String currentActivityName=currentActivity.getLocalClassName();
Log.d("刷新","当前活动名:"+currentActivityName);
if (messageType==MSG_SYSTEM){
if (content.equals("offline")){
offline();
}
}else {
//如果当前活动为聊天活动则进行数据展示
if (currentActivityName.equals("activity.ChatActivity")){
if (currentActivityName.equals("Activity.ChatActivity")){
Log.d("刷新","当前在聊天界面活动页");
updateChatUi(newMessage);
//如果当前活动为聊天列表界面,需要对指定的元素进行局部更新,如果没有该用户在聊天列表中,需要添加该好友项
// }else if (currentActivityName.equals("activity.ChatListActivity")){
// newMessage.save();
// updateChatListUi();
// 如果当前活动为聊天列表界面,需要对指定的元素进行局部更新,如果没有该用户在聊天列表中,需要添加该好友项
}else if (currentActivity.findViewById(R.id.chat_list_layout)!=null){
newMessage.save();
updateChatListUi();
}else{
newMessage.save();
notification();
updateChatListUi();
}
}
/****/
}catch (Exception e){
e.printStackTrace();
}
@ -103,31 +108,41 @@ public class WebSocketClient extends org.java_websocket.client.WebSocketClient {
currentActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
//TODO
// chatActivity=(ChatActivity) currentActivity;
// //如果当前正在聊天的人为消息的发送者,则进行展示,并存为已读消息
// if (chatActivity.friendNetId==newMessage.getSenderNetId()){
// chatActivity.addMsg(newMessage,true);
// }
// //如果当前正在聊天的人不是消息发送者,则更新一个未读标记
// else {
chatActivity = (ChatActivity) currentActivity;
//如果当前正在聊天的人为消息的发送者,则进行展示,并存为已读消息
if (chatActivity.friendNetId == newMessage.getSenderNetId()){
Log.d("刷新","当前聊天的人与消息发送者为同一人");
chatActivity.addMsg(newMessage,1);
}
//如果当前正在聊天的人不是消息发送者,则更新一个未读标记
else {
// chatActivity.hasNewMsgView.setVisibility(View.VISIBLE);
// newMessage.setRead(false);
// newMessage.save();
// }
newMessage.setFlag(0);
newMessage.save();
}
}
});
}
// public void updateChatListUi(){
// currentActivity.runOnUiThread(new Runnable() {
// @Override
// public void run() {
// privateMsgFragment =(ChatListActivity) currentActivity;
// chatListActivity.updateUi();
// }
// });
// }
public void updateChatListUi(){
currentActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
mainActivity = (MainActivity) currentActivity;
// FragmentManager fm = mainActivity.getSupportFragmentManager();
// Log.d("刷新","当前碎片管理:"+fm.toString());
// MessageChannelFragment mcf = (MessageChannelFragment) fm.findFragmentById(R.id.fragment_message_channel);
// Log.d("刷新","当前所在碎片:"+mcf);
// MessageChannelFragment msgcf = (MessageChannelFragment) mainActivity.getSupportFragmentManager().findFragmentById(R.id.fragment_message_channel);
// MessageChannelFragment mcf = new MessageChannelFragment();
MessageFragment mf = (MessageFragment) mainActivity.getFragment(2);
MessageChannelFragment mcf = mf.getAdapter().getMcf(0);
Log.d("当前碎片的名字滑动页:", mcf.getMessageCategoryTitle());
mcf.updateUi();
Log.d("刷新","聊天列表刷新完成");
}
});
}
public void notification(){
currentActivity.runOnUiThread(new Runnable() {
@Override
@ -147,26 +162,26 @@ public class WebSocketClient extends org.java_websocket.client.WebSocketClient {
ex.printStackTrace();
}
//好友数据同步
private void getNewFriends(final int friendNetId,final int ownerNetId){
new Thread(new Runnable() {
@Override
public void run() {
try {
String url = BaseActivity.SERVER_URL + "/user/getNewFriendById/"+ownerNetId+"/"+friendNetId;
String jsonStr= OkHttpUtil.synGet(url);
getNewFriendsResponse(jsonStr);
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
private void getNewFriendsResponse(final String jsonStr){
currentActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
//TODO
// //好友数据同步
// private void getNewFriends(final int friendNetId,final int ownerNetId){
// new Thread(new Runnable() {
// @Override
// public void run() {
// try {
// String url = BaseActivity.SERVER_URL + "/user/getNewFriendById/"+ownerNetId+"/"+friendNetId;
// String jsonStr= OkHttpUtil.synGet(url);
// getNewFriendsResponse(jsonStr);
// }catch (Exception e){
// e.printStackTrace();
// }
// }
// }).start();
// }
// private void getNewFriendsResponse(final String jsonStr){
// currentActivity.runOnUiThread(new Runnable() {
// @Override
// public void run() {
//
// Map jsonMap= JSON.parseObject(jsonStr);
// final String message=(String) jsonMap.get("message");
// if (message.equals("success")){
@ -180,10 +195,7 @@ public class WebSocketClient extends org.java_websocket.client.WebSocketClient {
// friend.save();
// Toast.makeText(currentActivity,"你有新的好友与消息",Toast.LENGTH_SHORT).show();
// }
}
});
}
// public void connectBlocking() {
// }
// });
// }
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#fe6969"
android:centerColor="#fb7a6a"
android:endColor="#ff976d"
android:angle="45"
/>
<corners
android:radius="15dp"/>
</shape>

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/>
</vector>

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M4,8h4L8,4L4,4v4zM10,20h4v-4h-4v4zM4,20h4v-4L4,16v4zM4,14h4v-4L4,10v4zM10,14h4v-4h-4v4zM16,4v4h4L20,4h-4zM10,8h4L14,4h-4v4zM16,14h4v-4h-4v4zM16,20h4v-4h-4v4z"/>
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 391 B

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save