diff --git a/Code/LeudaemiaLikeMe/app/libs/mysql-connector-java-5.1.49.jar b/Code/LeudaemiaLikeMe/app/libs/mysql-connector-java-5.1.49.jar new file mode 100644 index 0000000..d3c8b41 Binary files /dev/null and b/Code/LeudaemiaLikeMe/app/libs/mysql-connector-java-5.1.49.jar differ diff --git a/Code/LeudaemiaLikeMe/app/src/main/AndroidManifest.xml b/Code/LeudaemiaLikeMe/app/src/main/AndroidManifest.xml index d3657f0..ad36ab6 100644 --- a/Code/LeudaemiaLikeMe/app/src/main/AndroidManifest.xml +++ b/Code/LeudaemiaLikeMe/app/src/main/AndroidManifest.xml @@ -8,6 +8,7 @@ android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" + android:name=".Utils.Data" android:theme="@style/Theme.LeudaemiaLikeMe"> @@ -34,6 +35,10 @@ + + + + \ No newline at end of file diff --git a/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Activity/MainActivity.java b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Activity/MainActivity.java index 0dd0ede..81cb6f7 100644 --- a/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Activity/MainActivity.java +++ b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Activity/MainActivity.java @@ -11,6 +11,7 @@ import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; +import com.example.leudaemialikeme.Dao.QuestionDao; import com.example.leudaemialikeme.Fragment.CommunityFragment; import com.example.leudaemialikeme.Fragment.IndexFragment; import com.example.leudaemialikeme.Fragment.MessageFragment; @@ -38,6 +39,9 @@ public class MainActivity extends AppCompatActivity { private TextView textCommunity; private TextView textMessage; private TextView textMy; + + + //底部导航点击事件监听器 private View.OnClickListener onClickListener = new View.OnClickListener() { public void onClick(View v) { @@ -80,6 +84,18 @@ public class MainActivity extends AppCompatActivity { .addToBackStack(null) .commit(); } + + new Thread(new Runnable() { + @Override + public void run() { + QuestionDao userDao=new QuestionDao(); + try { + userDao.qSelect(); + } catch (Exception e) { + e.printStackTrace(); + } + } + }).start(); } private void initFirstRun(int i) { diff --git a/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Activity/SendInvitationActivity.java b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Activity/SendInvitationActivity.java index e4e0469..7d382d0 100644 --- a/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Activity/SendInvitationActivity.java +++ b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Activity/SendInvitationActivity.java @@ -1,16 +1,163 @@ package com.example.leudaemialikeme.Activity; +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.RadioButton; +import android.widget.TextView; +import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; +import com.example.leudaemialikeme.Dao.InvitationDao; import com.example.leudaemialikeme.R; +import com.example.leudaemialikeme.Utils.Data; + +import java.text.SimpleDateFormat; +import java.util.Locale; public class SendInvitationActivity extends AppCompatActivity { + EditText titleView; + EditText detailView; + TextView cancelView; + TextView commitView; + TextView titleCountView; + String title; + String detail; + String type; + InvitationDao invitation=new InvitationDao(); + + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_send_invitation); + + initView(); + setWatcher(); + setClick(); + } + + private void setClick() { + cancelView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + SendInvitationActivity.this.finish(); + } + }); + + commitView.setOnClickListener(new View.OnClickListener(){ + + @Override + public void onClick(View v) { + title=titleView.getText().toString(); + detail=detailView.getText().toString(); + if(title.length()<10){ + Log.e("输入的title:", String.valueOf(title.length())); + Toast.makeText(SendInvitationActivity.this, + "您输入的字数尚不足,请完善您的帖子标题",Toast.LENGTH_SHORT).show();} + 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(); + + } + }); + + + } + + + @SuppressLint("NonConstantResourceId") + public void onRadioButtonClicked(View view) { + RadioButton button = (RadioButton) view; + boolean isChecked = button.isChecked(); + switch (view.getId()) { + case R.id.SendInvitation_radio_bad: + case R.id.SendInvitation_radio_recover: + case R.id.SendInvitation_radio_experience: + case R.id.SendInvitation_radio_knowledge: + if (isChecked) { + type=button.getText().toString(); + } + break; + default: + type="经验帖"; + break; + } + } + public void initView(){ + titleView=(EditText)findViewById(R.id.invitation_title); + detailView=(EditText)findViewById(R.id.invitation_detail); + cancelView=(TextView)findViewById(R.id.invitation_cancel); + commitView=(TextView)findViewById(R.id.invitation_commit); + titleCountView=(TextView)findViewById(R.id.invitation_title_count); } + + public void setWatcher(){ + titleView.addTextChangedListener(new TextWatcher() { + private CharSequence temp; + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + temp=s; + } + + @Override + public void afterTextChanged(Editable s) { + int editStart = titleView.getSelectionStart(); + int editEnd = titleView.getSelectionEnd(); + titleCountView.setText(temp.length()+"/40"); + if(temp.length()>40){ + Toast.makeText(SendInvitationActivity.this, + "您输入的字数已经超过限制",Toast.LENGTH_SHORT).show(); + s.delete(editStart-1,editEnd); + int tempSelection=editStart; + titleView.setText(s); + try{ + titleView.setSelection(tempSelection); + } catch (Exception exception) { + titleView.setText(s); + } + } + } + }); + } + } diff --git a/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Activity/SendQuestionActivity.java b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Activity/SendQuestionActivity.java index a1a884c..c37120b 100644 --- a/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Activity/SendQuestionActivity.java +++ b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Activity/SendQuestionActivity.java @@ -1,16 +1,180 @@ package com.example.leudaemialikeme.Activity; -import androidx.appcompat.app.AppCompatActivity; - +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; +import android.widget.Toast; + +import androidx.appcompat.app.AppCompatActivity; +import com.example.leudaemialikeme.Dao.QuestionDao; import com.example.leudaemialikeme.R; +import com.example.leudaemialikeme.Utils.Data; -public class SendQuestionActivity extends AppCompatActivity { +import java.text.SimpleDateFormat; +import java.util.Locale; + +public class SendQuestionActivity extends AppCompatActivity{ + + EditText titleText; + EditText detailText; + TextView cancelView; + TextView commitView; + TextView textCountView; + TextView titleCountView; + String title; + String detail; + QuestionDao question=new QuestionDao(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_send_question); + initViews(); + setWatcher(); + setClick(); + } + + private void setClick() { + cancelView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + SendQuestionActivity.this.finish(); + } + }); + + commitView.setOnClickListener(new View.OnClickListener(){ + + @Override + public void onClick(View v) { + title=titleText.getText().toString(); + detail=detailText.getText().toString(); + if(titleText.getText().toString().length()<10){ + Log.e("输入的title:", String.valueOf(title.length())); + Toast.makeText(SendQuestionActivity.this, + "您输入的字数尚不足,请完善您的问题以便获得更好的回答",Toast.LENGTH_SHORT).show();} + 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(); + 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(); + + } + }); + + + } + + + public void initViews(){ + titleText=(EditText)findViewById(R.id.editText_question); + detailText=(EditText)findViewById(R.id.editText_question_detail); + cancelView=(TextView)findViewById(R.id.cancel); + commitView=(TextView)findViewById(R.id.commit); + textCountView=(TextView)findViewById(R.id.text_count); + titleCountView=(TextView)findViewById(R.id.title_count); +// title=titleText.getText().toString(); +// detail=detailText.getText().toString(); } + + public void setWatcher(){ + titleText.addTextChangedListener(new TextWatcher() { + private CharSequence temp; + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + temp=s; + } + + @Override + public void afterTextChanged(Editable s) { + int editStart = titleText.getSelectionStart(); + int editEnd = titleText.getSelectionEnd(); + titleCountView.setText(temp.length()+"/40"); + if(temp.length()>40){ + Toast.makeText(SendQuestionActivity.this, + "您输入的字数已经超过限制",Toast.LENGTH_SHORT).show(); + s.delete(editStart-1,editEnd); + int tempSelection=editStart; + detailText.setText(s); + try{ + detailText.setSelection(tempSelection); + } catch (Exception exception) { + detailText.setText(s); + } + } + } + }); + + detailText.addTextChangedListener(new TextWatcher() { + private CharSequence temp; + + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + temp=s; + } + @SuppressLint("SetTextI18n") + @Override + public void afterTextChanged(Editable s) { + int editStart = detailText.getSelectionStart(); + int editEnd = detailText.getSelectionEnd(); + textCountView.setText(temp.length()+"/200"); + if(temp.length()>200){ + Toast.makeText(SendQuestionActivity.this, + "您输入的字数已经超过限制",Toast.LENGTH_SHORT).show(); + s.delete(editStart-1,editEnd); + int tempSelection=editStart; + detailText.setText(s); + try{ + detailText.setSelection(tempSelection); + } catch (Exception exception) { + detailText.setText(s); + } + } + } + }); + + } + } + + + diff --git a/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Dao/InvitationDao.java b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Dao/InvitationDao.java new file mode 100644 index 0000000..186cab7 --- /dev/null +++ b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Dao/InvitationDao.java @@ -0,0 +1,28 @@ +package com.example.leudaemialikeme.Dao; + +import com.example.leudaemialikeme.Utils.DBUtils; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.Statement; + +public class InvitationDao { + public boolean iInsert(int uid,String type,String title,String content,String time,int likeNum,int collectNum)throws Exception{ + Connection conn=null; + Statement state=null; + ResultSet rs=null; + try{ + conn= DBUtils.getConnect(); + state=conn.createStatement(); + String sql="insert blog(uid,utype,utitle,ucontent,utime,ulikeNum,ucollectNum) values('"+ + uid+"','"+type+"','"+title+"','"+content+"','"+time+"','"+likeNum+"','"+collectNum+"')"; + state.execute(sql); + }catch (Exception e){ + e.printStackTrace(); + }finally { + DBUtils.release(conn,state,rs); + } + return true; + } + +} diff --git a/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Dao/QuestionDao.java b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Dao/QuestionDao.java new file mode 100644 index 0000000..1196eac --- /dev/null +++ b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Dao/QuestionDao.java @@ -0,0 +1,54 @@ +package com.example.leudaemialikeme.Dao; + +import android.util.Log; + +import com.example.leudaemialikeme.Utils.DBUtils; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.Statement; + +public class QuestionDao { + + public boolean qSelect()throws Exception{ + Connection conn=null; + Statement state=null; + ResultSet rs=null; + try{ + conn= DBUtils.getConnect(); + state=conn.createStatement(); + String sql="select uid=1 from Question"; + rs=state.executeQuery(sql); + while (rs.next()){ + Log.e("MYSQL","连接成功:uid"+rs.getString(1)); + } + }catch (Exception e){ + e.printStackTrace(); + }finally { + DBUtils.release(conn,state,rs); + } + return true; + } + + public boolean qInsert(int uid,String title, + String content,String time,int follow,int answer,int browse + )throws Exception{ + Connection conn=null; + Statement state=null; + ResultSet rs=null; + try{ + conn= DBUtils.getConnect(); + state=conn.createStatement(); + String sql="insert question(uid,qtitle,qcontent,qtime,qfollowNum,qanswerNum,qbrowseNum) values('"+ + uid+"','"+title+"','"+content+"','"+time+"','"+follow+"','"+answer+"','"+browse+"')"; + state.execute(sql); + }catch (Exception e){ + e.printStackTrace(); + }finally { + DBUtils.release(conn,state,rs); + } + return true; + } +} + + diff --git a/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/AnswerCollectFragment.java b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/AnswerCollectFragment.java index 7cea4af..c114956 100644 --- a/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/AnswerCollectFragment.java +++ b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/AnswerCollectFragment.java @@ -1,6 +1,10 @@ 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; @@ -8,11 +12,6 @@ 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.Adapter.CollectAdapter; import com.example.leudaemialikeme.Model.Collect; import com.example.leudaemialikeme.R; @@ -20,6 +19,8 @@ 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 diff --git a/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Model/User.java b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Model/User.java new file mode 100644 index 0000000..3243d51 --- /dev/null +++ b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Model/User.java @@ -0,0 +1,60 @@ +package com.example.leudaemialikeme.Model; + +public class User { + private static final long serialVersionUID = 1L; + private int uid; + private int id; + private String username; + private String name; + private String phone; + private String password; + + public int getUid(){ + return uid; + } + public void setUid(int uid){ + this.uid=uid; + } + public void setId(int id){ + this.id=id; + } + public int getId(){ + return id; + } + public void setUsername(String username){ + this.username=username; + } + public String getUsername(){ + return username; + } + public void setName(String name){ + this.name=name; + } + public String getName(){ + return name; + } + public void setPhone(String phone){ + this.phone=phone; + } + public String getPhone(){ + return phone; + } + public void setPassword(String password){ + this.password=password; + } + public String getPassword(){ + return password; + } + public User(int uid,int id,String username,String name, String phone,String password){ + this.uid=uid; + this.id=id; + this.username=username; + this.name=name; + this.phone=phone; + this.password=password; + } + + + +} + diff --git a/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Utils/DBUtils.java b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Utils/DBUtils.java new file mode 100644 index 0000000..c1f4853 --- /dev/null +++ b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Utils/DBUtils.java @@ -0,0 +1,56 @@ +package com.example.leudaemialikeme.Utils; + +import android.util.Log; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.Statement; + +public class DBUtils { + + private final static String driver = "com.mysql.jdbc.Driver"; + private final static String url = "jdbc:mysql://192.168.80.1:3306/leukemia?serverTimezone=UTC&useSSL=false&characterEncoding=utf8"; + + private final static String username = "root"; + private final static String password = "123456"; + + Connection conn=null; + Statement st=null; + ResultSet rs=null; + + static { + try { + Class.forName(driver); + Log.v("mysql","加载驱动成功"); + } catch (ClassNotFoundException e) { + Log.e("mysql","加载驱动错误"); + } + } + + + //2. 获取连接 + public static Connection getConnect() throws Exception { + Connection conn=DriverManager.getConnection(url, username, password); + Log.v("mysql","成功获取数据库"); + return conn; + } + + //3. 释放连接资源 + + public static void release(Connection conn, Statement st, ResultSet rs) throws Exception { + if (rs != null) { + rs.close(); + } + if (st != null) { + st.close(); + } + if (conn != null) { + conn.close(); + } + + } + +} + + diff --git a/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Utils/Data.java b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Utils/Data.java new file mode 100644 index 0000000..4ceca02 --- /dev/null +++ b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Utils/Data.java @@ -0,0 +1,20 @@ +package com.example.leudaemialikeme.Utils; +public class Data extends android.app.Application { + public int uid=1; + public String id="430481200101220131"; + public String name="abc"; + + public int getUid(){ + return uid; + } + public void setUid(int uid){ + this.uid= uid; + } + + public String getId(){ + return this.id; + } + public void setId(String id){ + this.id= id; + } +} diff --git a/Code/LeudaemiaLikeMe/app/src/main/res/layout/activity_send_invitation.xml b/Code/LeudaemiaLikeMe/app/src/main/res/layout/activity_send_invitation.xml index 3fd1c09..b68b8fa 100644 --- a/Code/LeudaemiaLikeMe/app/src/main/res/layout/activity_send_invitation.xml +++ b/Code/LeudaemiaLikeMe/app/src/main/res/layout/activity_send_invitation.xml @@ -7,7 +7,7 @@ android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.leudaemialikeme.Activity.SendInvitationActivity" > - + android:hint="请输入你的标题(10-40字)" /> + + + + + + + + + + + + + + + + + + + + + diff --git a/Code/LeudaemiaLikeMe/app/src/main/res/layout/activity_send_question.xml b/Code/LeudaemiaLikeMe/app/src/main/res/layout/activity_send_question.xml index 77fb769..ace7ea5 100644 --- a/Code/LeudaemiaLikeMe/app/src/main/res/layout/activity_send_question.xml +++ b/Code/LeudaemiaLikeMe/app/src/main/res/layout/activity_send_question.xml @@ -54,19 +54,30 @@ android:layout_height="42dp" android:ems="10" android:maxLength="40" - android:inputType="textPersonName" + android:inputType="textMultiLine" + android:lines="4" android:layout_margin="10dp" - android:hint="请输入你的问题(10-40个字)" /> + android:hint="请输入你的问题(10-40字)" /> + +