diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
index 7866781..7859c16 100644
--- a/.idea/deploymentTargetDropDown.xml
+++ b/.idea/deploymentTargetDropDown.xml
@@ -12,6 +12,6 @@
-
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index b5b4d93..891d4fc 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -3,20 +3,23 @@
diff --git a/app/build.gradle b/app/build.gradle
index 2570292..6c37ec9 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -41,6 +41,7 @@
implementation 'com.google.android.material:material:1.6.1'
implementation 'com.google.android.gms:play-services-maps:17.0.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
+ implementation 'com.google.firebase:firebase-firestore:23.0.2'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
@@ -55,4 +56,7 @@
//google用
implementation 'com.google.maps:google-maps-services:0.2.5'
implementation 'org.slf4j:slf4j-nop:1.7.25'
+
+ //RecycleView用
+ implementation 'androidx.recyclerview:recyclerview:1.2.1'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 8f005ce..bc3d70f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -20,7 +20,11 @@
tools:targetApi="31"
android:usesCleartextTraffic="true">
- tools:targetApi="31">
+
+
-
-
-
-
-
+
+
+ android:name=".ChangePwActivity"
+ android:exported="true"
-
-
+
+
-
-
+
+
+ android:label="@string/title_activity_post">
+
+ android:label="@string/title_activity_shop">
+
\ No newline at end of file
diff --git a/app/src/main/java/com/example/nemophila/ChangePwActivity.java b/app/src/main/java/com/example/nemophila/ChangePwActivity.java
new file mode 100644
index 0000000..6dea40f
--- /dev/null
+++ b/app/src/main/java/com/example/nemophila/ChangePwActivity.java
@@ -0,0 +1,75 @@
+package com.example.nemophila;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.EditText;
+
+import com.example.nemophila.entities.Account;
+import com.example.nemophila.resources.AccountsRest;
+
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+import retrofit2.Retrofit;
+import retrofit2.converter.jackson.JacksonConverterFactory;
+
+public class ChangePwActivity extends AppCompatActivity {
+
+ private Retrofit retrofit;
+ private AccountsRest AccountsRest;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_change_pw);
+ //通信の初期化
+ this.retrofit = new Retrofit.Builder()
+ .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/nemophila/")
+ .addConverterFactory(JacksonConverterFactory.create())
+ .build();
+ this.AccountsRest = retrofit.create(AccountsRest.class);
+
+
+ findViewById(R.id.ChangePassword).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ EditText edituid = (EditText) findViewById(R.id.editTextUserid);
+ String uid = edituid.getText().toString();
+ EditText editoldtpw = (EditText) findViewById(R.id.editTextTextOldPassword);
+ String oldPw = editoldtpw.getText().toString();
+ EditText editnewpw = (EditText) findViewById(R.id.editTextTextNewPassword);
+ String newPw = editnewpw.getText().toString();
+ Nemophila nemophila = new Nemophila();
+ String token = nemophila.getToken();
+
+ // 通信
+ Call call = AccountsRest.changePw(uid,oldPw,newPw,token);
+
+ call.enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ if (response.isSuccessful()) {
+ System.out.println("通信成功:changeBelongsAndMaster");
+ Intent intent = new Intent(ChangePwActivity.this, LoginActivity.class);
+ startActivity(intent);
+ } else {
+ System.out.println("通信可能:changeBelongsAndMaster: " + response.code());
+// if (response.code() == 500){
+// ((TextView) findViewById(R.id.textView)).setText("The UserName you gave is already in use.");
+// }else if (response.code() == 404){
+// ((TextView) findViewById(R.id.textView)).setText("SignUp failed. Please enter the correct credentials.");
+// }
+ }
+ }
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ System.out.println("通信失敗:changeBelongsAndMaster");
+ }
+ });
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/com/example/nemophila/LoginActivity.java b/app/src/main/java/com/example/nemophila/LoginActivity.java
index bf945c6..f8310d6 100644
--- a/app/src/main/java/com/example/nemophila/LoginActivity.java
+++ b/app/src/main/java/com/example/nemophila/LoginActivity.java
@@ -6,11 +6,11 @@
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
+import android.widget.TextView;
+import com.example.nemophila.entities.Account;
import com.example.nemophila.resources.AccountsRest;
-import java.util.HashMap;
-
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
@@ -43,22 +43,27 @@
String pw = editpw.getText().toString();
// 通信
- Call call = AccountsRest.getAccounts();
+ Call call = AccountsRest.getAccounts(uid,pw);
- call.enqueue (new Callback() {
+ call.enqueue (new Callback() {
@Override
- public void onResponse(Call call, Response response) {
+ public void onResponse(Call call, Response response) {
if (response.isSuccessful()) {
System.out.println("通信成功:changeBelongsAndMaster");
Intent intent = new Intent(LoginActivity.this,MainActivity.class);
startActivity(intent);
} else {
System.out.println("通信可能:changeBelongsAndMaster: " + response.code());
+ if (response.code() == 500){
+ ((TextView) findViewById(R.id.textView)).setText("Invalid UserID or Password");
+ }else if (response.code() == 404){
+ ((TextView) findViewById(R.id.textView)).setText("Login failed. Please enter the correct credentials.");
+ }
}
}
@Override
- public void onFailure(Call call, Throwable t) {
+ public void onFailure(Call call, Throwable t) {
System.out.println("通信失敗:changeBelongsAndMaster");
}
});
@@ -71,5 +76,12 @@
startActivity(intent);
}
});
+ findViewById(R.id.ForgotPW).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent intent = new Intent(LoginActivity.this, ChangePwActivity.class);
+ startActivity(intent);
+ }
+ });
}
}
diff --git a/app/src/main/java/com/example/nemophila/MainActivity.java b/app/src/main/java/com/example/nemophila/MainActivity.java
index d287f6a..70765a3 100644
--- a/app/src/main/java/com/example/nemophila/MainActivity.java
+++ b/app/src/main/java/com/example/nemophila/MainActivity.java
@@ -1,22 +1,21 @@
package com.example.nemophila;
-import androidx.annotation.NonNull;
import androidx.core.content.res.ResourcesCompat;
import androidx.fragment.app.FragmentActivity;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
-import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
-import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.graphics.Point;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.widget.Toast;
import android.annotation.SuppressLint;
-import android.net.Uri;
-import android.os.Bundle;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationListener;
@@ -25,16 +24,16 @@
import android.content.Intent;
import android.provider.Settings;
import android.util.Log;
-import android.widget.Toast;
import android.Manifest;
-import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
+import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptor;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
+import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.GroundOverlay;
import com.google.android.gms.maps.model.GroundOverlayOptions;
import com.google.android.gms.maps.model.LatLng;
@@ -42,8 +41,9 @@
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import com.example.nemophila.databinding.ActivityMainBinding;
+import com.google.firebase.firestore.GeoPoint;
-import java.util.Locale;
+import java.util.Map;
public class MainActivity extends FragmentActivity implements OnMapReadyCallback,LocationListener {
@@ -51,15 +51,15 @@
private ActivityMainBinding binding;
private LatLng latlng;
private LatLng latlng2;
- private LatLng location;
-
+
+ private GroundOverlay current_overlay;
LocationManager locationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//現在地アイコンの取得
- Drawable ic_current = ResourcesCompat.getDrawable(getResources(),R.drawable.ic_current_location,null);
+ //Drawable ic_current = ResourcesCompat.getDrawable(getResources(),R.drawable.ic_current_location,null);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
@@ -80,28 +80,10 @@
.findFragmentById(R.id.map);
assert mapFragment != null;
mapFragment.getMapAsync(this);
+
+
}
- /*
- ここからマップに関する操作
- */
- /*
- @Override
- public void onMapReady(GoogleMap googleMap) {
- mMap = googleMap;
-
- //マーカー(ピン)の登録・表示方法(例)
- LatLng ntlab = new LatLng(34.73, 135.26);
- mMap.addMarker(new MarkerOptions().position(ntlab).title("Marker in ntlab"));
- mMap.moveCamera(CameraUpdateFactory.newLatLng(ntlab));
-
- //カメラの移動処理方法(例)
- CameraUpdate cUpdate = CameraUpdateFactory.newLatLngZoom(
- new LatLng(34.73, 135.26), 15);
- mMap.moveCamera(cUpdate);
- }
- */
-
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
@@ -110,14 +92,14 @@
double latitude = 34.7308032;
double longitude = 135.2630272;
- latlng = new LatLng(latitude, longitude);
//テスト用
+ latlng = new LatLng(latitude, longitude);
latlng2 = new LatLng(34.74, 135.26);
- // 標準のマーカー
+ //標準のマーカー(店用のピン)
setMarker(latitude, longitude);
- // アイコン画像をマーカーに設定
+ //アイコン画像をマーカーに設定
//画像関連がわかっていないのでパス
//setIcon(latitude, longitude);
@@ -148,6 +130,7 @@
//投稿が完了した場合
//ピンをその座標に立て、緯度経度をタイトルに設定
//タイトルはnullにする予定
+ //↓返り値でMarkerを返すので、Nemophilaに渡す予定
mMap.addMarker(new MarkerOptions().position(newlocation).title(""+longpushLocation.latitude+" :"+ longpushLocation.longitude));
//ピンを立てた位置にカメラを移動
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(newlocation, 18));
@@ -168,9 +151,8 @@
}
- //ピンの設定
+ //ピンの初期設定。完成時不要
private void setMarker(double latitude, double longitude){
-
MarkerOptions markerOptions = new MarkerOptions();
MarkerOptions markerOptions2 = new MarkerOptions();
@@ -214,38 +196,42 @@
}
private void setIcon(double latitude, double longitude){
- Drawable ic_current = ResourcesCompat.getDrawable(getResources(),R.drawable.icon,null);
+ //Drawable ic_current = ResourcesCompat.getDrawable(getResources(),R.drawable.icon_current,null);
+ //更新前の現在地アイコンを消去
+ if(current_overlay != null) {
+ current_overlay.remove();
+ }
- //LatLng current_location = new LatLng(34.73080,135.2630272);
LatLng current_location = new LatLng(latitude,longitude);
- //mMap.addMarker(new MarkerOptions().position(current_location).icon(BitmapDescriptorFactory.fromResource(R.drawable.icon)));
+
// マップに貼り付ける BitmapDescriptor生成
- // 画像は自分で適当に用意します。ここではmipmapから持ってきましたが
- BitmapDescriptor descriptor = BitmapDescriptorFactory.fromResource(R.drawable.icon);
+ BitmapDescriptor descriptor = BitmapDescriptorFactory.fromResource(R.drawable.icon_current);
//Drawable ic_current = ResourcesCompat.getDrawable(getResources(),R.drawable.ic_current_location,null);
// 貼り付設定
GroundOverlayOptions overlayOptions = new GroundOverlayOptions();
overlayOptions.image(descriptor);
- // public GroundOverlayOptions anchor (float u, float v)
+ //public GroundOverlayOptions anchor (float u, float v)
// (0,0):top-left, (0,1):bottom-left, (1,0):top-right, (1,1):bottom-right
overlayOptions.anchor(0.5f, 0.5f);
// 張り付け画像の大きさ メートル単位
// public GroundOverlayOptions position(LatLng location, float width, float height)
- overlayOptions.position(current_location, 300f, 300f);
+ overlayOptions.position(current_location, 200f, 200f);
// マップに貼り付け・アルファを設定
- GroundOverlay overlay = mMap.addGroundOverlay(overlayOptions);
- // ズーム
+ current_overlay = mMap.addGroundOverlay(overlayOptions);
+
+ // カメラを移動
zoomMap(latitude, longitude);
// 透明度
- assert overlay != null;
- overlay.setTransparency(0.0F);
+ assert current_overlay != null;
+ current_overlay.setTransparency(0.8F);
}
+
private final ActivityResultLauncher
requestPermissionLauncher = registerForActivityResult(
new ActivityResultContracts.RequestPermission(),
@@ -260,6 +246,7 @@
}
});
+ //現在地の取得
@SuppressLint("MissingPermission")
private void locationStart(){
Log.d("debug","locationStart()");
@@ -292,6 +279,7 @@
//解決しているはずの問題にエラーが起きています
//実行はできます
+ //勝手に治りました
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
1000, 50, this);
@@ -300,6 +288,8 @@
@Override
public void onLocationChanged(Location location) {
//現在地が変更されるたびに現在地アイコンを移動
+ //LatLng型で一応受け取っておく
+ latlng = new LatLng(location.getLatitude(), location.getLongitude());
/*
テスト用。現在座標を画面に表示
@@ -314,7 +304,7 @@
String str2 = "Longitude:"+location.getLongitude();
textView2.setText(str2);
- //現在地アイコンを表示
+ //現在地アイコンを表示.このsetIcon内にzoomMap処理もあるので注意
setIcon(location.getLatitude(),location.getLongitude());
}
diff --git a/app/src/main/java/com/example/nemophila/Nemophila.java b/app/src/main/java/com/example/nemophila/Nemophila.java
index 70e79e0..1069e4e 100644
--- a/app/src/main/java/com/example/nemophila/Nemophila.java
+++ b/app/src/main/java/com/example/nemophila/Nemophila.java
@@ -2,9 +2,14 @@
import android.app.Application;
+import com.example.nemophila.entities.Shop;
+
public class Nemophila extends Application {
private String uid;
private String token;
+ private Shop currentShop;
+ private double currentLongitude;
+ private double currentLatitude;
//Getter
public String getUid() {
@@ -13,6 +18,15 @@
public String getToken() {
return token;
}
+ public Shop getCurrentShop() {
+ return currentShop;
+ }
+ public double getCurrentLongitude() {
+ return currentLongitude;
+ }
+ public double getCurrentLatitude() {
+ return currentLatitude;
+ }
//Setter
public void setUid(String uid) {
@@ -21,4 +35,13 @@
public void setToken(String token) {
this.token = token;
}
+ public void setCurrentShop(Shop currentShop) {
+ this.currentShop = currentShop;
+ }
+ public void setCurrentLongitude(double currentLongitude) {
+ this.currentLongitude = currentLongitude;
+ }
+ public void setCurrentLatitude(double currentLatitude) {
+ this.currentLatitude = currentLatitude;
+ }
}
diff --git a/app/src/main/java/com/example/nemophila/PostDataModel.java b/app/src/main/java/com/example/nemophila/PostDataModel.java
new file mode 100644
index 0000000..0d9f577
--- /dev/null
+++ b/app/src/main/java/com/example/nemophila/PostDataModel.java
@@ -0,0 +1,43 @@
+package com.example.nemophila;
+
+public class PostDataModel {
+ private String name;
+ private String date;
+ private String rate;
+ private String genre;
+ private String comment;
+
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDate() {
+ return date;}
+ public void setDate(String date) {
+ this.date = date;
+ }
+
+ public String getRate() {
+ return rate;
+ }
+ public void setRate(String rate) {
+ this.rate = rate;
+ }
+
+ public String getGenre() {
+ return genre;
+ }
+ public void setGenre(String genre) {
+ this.genre = genre;
+ }
+
+ public String getComment() {
+ return comment;
+ }
+ public void setComment(String comment) {
+ this.comment = comment;
+ }
+}
diff --git a/app/src/main/java/com/example/nemophila/PostsViewHolder.java b/app/src/main/java/com/example/nemophila/PostsViewHolder.java
new file mode 100644
index 0000000..c1d19fd
--- /dev/null
+++ b/app/src/main/java/com/example/nemophila/PostsViewHolder.java
@@ -0,0 +1,24 @@
+package com.example.nemophila;
+
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+public class PostsViewHolder extends RecyclerView.ViewHolder {
+ public TextView nameView;
+ public TextView dateView;
+ public TextView rateView;
+ public TextView genreView;
+ public TextView commentView;
+
+ public PostsViewHolder(@NonNull View itemView) {
+ super(itemView);
+ nameView = (TextView) itemView.findViewById(R.id.userName);
+ dateView = (TextView) itemView.findViewById(R.id.date);
+ rateView = (TextView) itemView.findViewById(R.id.rate);
+ genreView = (TextView) itemView.findViewById(R.id.genre);
+ commentView = (TextView) itemView.findViewById(R.id.comment);
+ }
+}
diff --git a/app/src/main/java/com/example/nemophila/ShopActivity.java b/app/src/main/java/com/example/nemophila/ShopActivity.java
index e8fdb1c..b1d0143 100644
--- a/app/src/main/java/com/example/nemophila/ShopActivity.java
+++ b/app/src/main/java/com/example/nemophila/ShopActivity.java
@@ -1,12 +1,20 @@
package com.example.nemophila;
+import static android.app.PendingIntent.getActivity;
+
import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.DividerItemDecoration;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
+import java.util.ArrayList;
+import java.util.List;
+
public class ShopActivity extends AppCompatActivity {
@Override
@@ -14,6 +22,7 @@
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_shop);
+ //右上のボタンで投稿画面へ遷移
Button postButton = (Button)findViewById(R.id.postButton);
postButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
@@ -21,5 +30,40 @@
startActivity(intent);
}
});
+
+ //RecyclerView
+ RecyclerView rv = (RecyclerView) findViewById(R.id.postsList);
+ ShopActivityAdapter adapter = new ShopActivityAdapter(this.createDataset());
+
+ LinearLayoutManager llm = new LinearLayoutManager(this);
+
+
+ RecyclerView.ItemDecoration itemDecoration =
+ new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
+ rv.addItemDecoration(itemDecoration);
+
+ rv.setHasFixedSize(true);
+ rv.setLayoutManager(llm);
+ rv.setAdapter(adapter);
+
+
+
+ }
+
+ private List createDataset() {
+
+ //RecyclerViewの中身の仮データ
+ List dataset = new ArrayList<>();
+ for (int i = 0; i < 50; i++) {
+ PostDataModel data = new PostDataModel();
+ data.setName("ネモフィラ 太郎" + i + "号");
+ data.setDate("yyyy/mm/dd");
+ data.setRate("★★★★★");
+ data.setGenre("ラーメン, 中華, おいしい, 安い");
+ data.setComment("おいしかった。");
+
+ dataset.add(data);
+ }
+ return dataset;
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/nemophila/ShopActivityAdapter.java b/app/src/main/java/com/example/nemophila/ShopActivityAdapter.java
new file mode 100644
index 0000000..8c3b5ce
--- /dev/null
+++ b/app/src/main/java/com/example/nemophila/ShopActivityAdapter.java
@@ -0,0 +1,42 @@
+package com.example.nemophila;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import java.util.List;
+
+public class ShopActivityAdapter extends RecyclerView.Adapter {
+
+ public List list;
+
+ public ShopActivityAdapter(List list) {
+ this.list =list;
+ }
+
+ @NonNull
+ @Override
+ public PostsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+
+ View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_shop_activity_posts, parent,false);
+ PostsViewHolder vh = new PostsViewHolder(inflate);
+ return vh;
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull PostsViewHolder holder, int position) {
+ holder.nameView.setText(list.get(position).getName());
+ holder.dateView.setText(list.get(position).getDate());
+ holder.rateView.setText(list.get(position).getRate());
+ holder.genreView.setText(list.get(position).getGenre());
+ holder.commentView.setText(list.get(position).getComment());
+ }
+
+ @Override
+ public int getItemCount() {
+ return list.size();
+ }
+}
diff --git a/app/src/main/java/com/example/nemophila/ShopCreateActivity.java b/app/src/main/java/com/example/nemophila/ShopCreateActivity.java
new file mode 100644
index 0000000..811ddd9
--- /dev/null
+++ b/app/src/main/java/com/example/nemophila/ShopCreateActivity.java
@@ -0,0 +1,14 @@
+package com.example.nemophila;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.os.Bundle;
+
+public class ShopCreateActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_shop_create);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/nemophila/SignUpActivity.java b/app/src/main/java/com/example/nemophila/SignUpActivity.java
index cc01b38..bccc61a 100644
--- a/app/src/main/java/com/example/nemophila/SignUpActivity.java
+++ b/app/src/main/java/com/example/nemophila/SignUpActivity.java
@@ -2,15 +2,15 @@
import androidx.appcompat.app.AppCompatActivity;
+import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
+import android.widget.TextView;
import com.example.nemophila.entities.Account;
import com.example.nemophila.resources.AccountsRest;
-import java.util.HashMap;
-
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
@@ -50,8 +50,15 @@
public void onResponse(Call call, Response response) {
if (response.isSuccessful()) {
System.out.println("通信成功:changeBelongsAndMaster");
+ Intent intent = new Intent(SignUpActivity.this,MainActivity.class);
+ startActivity(intent);
} else {
System.out.println("通信可能:changeBelongsAndMaster: " + response.code());
+ if (response.code() == 500){
+ ((TextView) findViewById(R.id.textView)).setText("The UserName you gave is already in use.");
+ }else if (response.code() == 404){
+ ((TextView) findViewById(R.id.textView)).setText("SignUp failed. Please enter the correct credentials.");
+ }
}
}
diff --git a/app/src/main/java/com/example/nemophila/TestActivity.java b/app/src/main/java/com/example/nemophila/TestActivity.java
index c2571c8..bd60023 100644
--- a/app/src/main/java/com/example/nemophila/TestActivity.java
+++ b/app/src/main/java/com/example/nemophila/TestActivity.java
@@ -24,6 +24,8 @@
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
+ Nemophila nemophila = (Nemophila) this.getApplication();
+
//テスト用ViewModel(ViewModelが増えた場合はここで準備。spinnerItemに名前も追加すること)
//RoomViewModelへのアクセス
ShopsViewModel shopsViewModel = new ViewModelProvider(this).get(ShopsViewModel.class);
@@ -55,13 +57,14 @@
switch (position){
//ここにテストしたい処理を追加する( 0はShopsViewModel、1はAccountViewModel、2はPostsViewModel)
case 0:
- shopsViewModel.setViewArea(20.0, 40.0, 10.0, 30.0);
+ // shopsViewModel.setViewArea(20.0, 40.0, 10.0, 30.0);
+ shopsViewModel.start(500, nemophila);
break;
case 1:
//accountViewModel.getAccount("1111");
break;
case 2:
- //postsViewModel.fetchPosts("1");
+ postsViewModel.getShopPosts("2637a768-da49-40f9-bd48-a4f3aea64e28");
break;
}
}
diff --git a/app/src/main/java/com/example/nemophila/entities/Account.java b/app/src/main/java/com/example/nemophila/entities/Account.java
index 2664fa0..9ebbf12 100644
--- a/app/src/main/java/com/example/nemophila/entities/Account.java
+++ b/app/src/main/java/com/example/nemophila/entities/Account.java
@@ -1,4 +1,46 @@
package com.example.nemophila.entities;
+import java.util.HashMap;
+
public class Account {
+ private String name;
+ private String id;
+ private String pw;
+ private String token;
+ private HashMap posts = new HashMap<>();
+
+
+ //Getter
+
+ public String getName() {
+ return name;
+ }
+ public String getId() {
+ return id;
+ }
+ public String getPw() {
+ return pw;
+ }
+ public String getToken() {
+ return token;
+ }
+ public HashMap getPosts() {
+ return posts;
+ }
+ //Setter
+ public void setName(String name) {
+ this.name = name;
+ }
+ public void setId(String id) {
+ this.id = id;
+ }
+ public void setPw(String pw) {
+ this.pw = pw;
+ }
+ public void setToken(String token) {
+ this.token = token;
+ }
+ public void setPosts(HashMap posts) {
+ this.posts = posts;
+ }
}
diff --git a/app/src/main/java/com/example/nemophila/entities/AccountJson.java b/app/src/main/java/com/example/nemophila/entities/AccountJson.java
new file mode 100644
index 0000000..012ae18
--- /dev/null
+++ b/app/src/main/java/com/example/nemophila/entities/AccountJson.java
@@ -0,0 +1,25 @@
+package com.example.nemophila.entities;
+
+public class AccountJson {
+ private int postsCount;
+ private String name;
+ private String id;
+ private String token;
+
+ //Getter
+ public int getPostsCount() {
+ return postsCount;
+ }
+ public String getId() {return id;}
+ public String getName() {return name;}
+ public String getToken() {return token;}
+
+ //Setter
+ public void setPostsCount(int postsCount) {
+ this.postsCount = postsCount;
+ }
+ public void setName(String name) {this.name = name;}
+ public void setId(String id) {this.id = id;}
+ public void setToken(String token) {this.token = token;}
+
+}
diff --git a/app/src/main/java/com/example/nemophila/entities/Post.java b/app/src/main/java/com/example/nemophila/entities/Post.java
index fc17f1d..5c65deb 100644
--- a/app/src/main/java/com/example/nemophila/entities/Post.java
+++ b/app/src/main/java/com/example/nemophila/entities/Post.java
@@ -1,30 +1,29 @@
package com.example.nemophila.entities;
public class Post {
- private String id;
+ private String pid;
+ private String uid;
+ private String name;
private String genre;
- private String image1;
- private String image2;
- private String image3;
+ private String date;
private int rate;
private String comment;
- private Account owner;
//Getter
- public String getId() {
- return id;
+ public String getPid() {
+ return pid;
+ }
+ public String getUid() {
+ return uid;
+ }
+ public String getName() {
+ return name;
}
public String getGenre() {
return genre;
}
- public String getImage1() {
- return image1;
- }
- public String getImage2() {
- return image2;
- }
- public String getImage3() {
- return image3;
+ public String getDate() {
+ return date;
}
public int getRate() {
return rate;
@@ -32,25 +31,22 @@
public String getComment() {
return comment;
}
- public Account getOwner() {
- return owner;
- }
//Setter
- public void setId(String id) {
- this.id = id;
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+ public void setUid(String uid) {
+ this.uid = uid;
+ }
+ public void setName(String name) {
+ this.name = name;
}
public void setGenre(String genre) {
this.genre = genre;
}
- public void setImage1(String image1) {
- this.image1 = image1;
- }
- public void setImage2(String image2) {
- this.image2 = image2;
- }
- public void setImage3(String image3) {
- this.image3 = image3;
+ public void setDate(String date) {
+ this.date = date;
}
public void setRate(int rate) {
this.rate = rate;
@@ -58,7 +54,15 @@
public void setComment(String comment) {
this.comment = comment;
}
- public void setOwner(Account owner) {
- this.owner = owner;
+
+ //コンストラクタ(PostJsonからPostを作成)
+ public Post(PostJson pj) {
+ this.pid = pj.getId();
+ this.uid = pj.getOwner().getId();
+ this.name = pj.getOwner().getName();
+ this.genre = this.getGenre();
+ this.date = "2001/12/12"; //サンプル
+ this.rate = pj.getRate();
+ this.comment = pj.getComment();
}
}
diff --git a/app/src/main/java/com/example/nemophila/entities/PostJson.java b/app/src/main/java/com/example/nemophila/entities/PostJson.java
index 1a3573b..11fea40 100644
--- a/app/src/main/java/com/example/nemophila/entities/PostJson.java
+++ b/app/src/main/java/com/example/nemophila/entities/PostJson.java
@@ -1,22 +1,64 @@
package com.example.nemophila.entities;
public class PostJson {
- private String uid;
- private String pid;
+ private String id;
+ private String genre;
+ private String image1;
+ private String image2;
+ private String image3;
+ private int rate;
+ private String comment;
+ private AccountJson owner;
- //setter
- public void setUid(String uid) {
- this.uid = uid;
+ //Getter
+ public String getId() {
+ return id;
}
- public void setPid(String pid) {
- this.pid = pid;
+ public String getGenre() {
+ return genre;
+ }
+ public String getImage1() {
+ return image1;
+ }
+ public String getImage2() {
+ return image2;
+ }
+ public String getImage3() {
+ return image3;
+ }
+ public int getRate() {
+ return rate;
+ }
+ public String getComment() {
+ return comment;
+ }
+ public AccountJson getOwner() {
+ return owner;
}
- //getter
- public String getUid() {
- return uid;
+ //Setter
+ public void setId(String id) {
+ this.id = id;
}
- public String getPid() {
- return pid;
+ public void setGenre(String genre) {
+ this.genre = genre;
+ }
+ public void setImage1(String image1) {
+ this.image1 = image1;
+ }
+ public void setImage2(String image2) {
+ this.image2 = image2;
+ }
+ public void setImage3(String image3) {
+ this.image3 = image3;
+ }
+ public void setRate(int rate) {
+ this.rate = rate;
+ }
+ public void setComment(String comment) {
+ this.comment = comment;
+ }
+ public void setOwner(AccountJson owner) {
+ this.owner = owner;
}
}
diff --git a/app/src/main/java/com/example/nemophila/resources/AccountsRest.java b/app/src/main/java/com/example/nemophila/resources/AccountsRest.java
index 81e0aa5..3d57bc1 100644
--- a/app/src/main/java/com/example/nemophila/resources/AccountsRest.java
+++ b/app/src/main/java/com/example/nemophila/resources/AccountsRest.java
@@ -62,5 +62,17 @@
@Field("name") String name,
@Field("token") String token
);
-
+
+ @GET("accounts/{uid}/posts")
+ Call> getAccountPosts(
+ @Path("uid") String uid
+ );
+
+ @DELETE("shops/{sid}/posts/{uid}/{pid}")
+ Call deletePost(
+ @Path("sid") String sid,
+ @Path("uid") String uid,
+ @Path("pid") String pid,
+ @Field("token") String token
+ );
}
diff --git a/app/src/main/java/com/example/nemophila/resources/PostsRest.java b/app/src/main/java/com/example/nemophila/resources/PostsRest.java
index da76051..1791bd4 100644
--- a/app/src/main/java/com/example/nemophila/resources/PostsRest.java
+++ b/app/src/main/java/com/example/nemophila/resources/PostsRest.java
@@ -34,7 +34,7 @@
);
@GET("shops/{sid}/posts")
- Call> getShopPosts(
+ Call> getShopPosts(
@Path("sid") String sid
);
}
diff --git a/app/src/main/java/com/example/nemophila/viewmodels/AccountViewModel.java b/app/src/main/java/com/example/nemophila/viewmodels/AccountViewModel.java
index b8d13de..42479b7 100644
--- a/app/src/main/java/com/example/nemophila/viewmodels/AccountViewModel.java
+++ b/app/src/main/java/com/example/nemophila/viewmodels/AccountViewModel.java
@@ -1,11 +1,14 @@
package com.example.nemophila.viewmodels;
import com.example.nemophila.entities.Account;
+import com.example.nemophila.entities.Post;
import com.example.nemophila.resources.AccountsRest;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
+import java.util.Collection;
+
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
@@ -18,23 +21,26 @@
private final AccountsRest accountsRest;
// ライブデータ
private final MutableLiveData accountLiveData;
+ private final MutableLiveData> accountPostsLiveData;
// コンストラクタ
public AccountViewModel() {
- this.accountLiveData = new MutableLiveData<>();
this.retrofit = new Retrofit.Builder()
.baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/nemophila/")
.addConverterFactory(JacksonConverterFactory.create())
.build();
this.accountsRest = retrofit.create(AccountsRest.class);
+ this.accountLiveData = new MutableLiveData<>();
+ this.accountPostsLiveData = new MutableLiveData<>();
}
// ライブデータの取得(ゲッター)
public MutableLiveData getAccountLiveData() {
return accountLiveData;
}
+ public MutableLiveData> getAccountPostsLiveData() { return accountPostsLiveData; }
- // アカウント情報の取得
+ // 対象のアカウント情報の取得
public void getAccount(String uid) {
Call call = accountsRest.getAccount(uid);
@@ -54,7 +60,7 @@
});
}
- // アカウント情報の削除
+ // 対象のアカウント情報の削除
public void deleteAccount(String uid) {
Call call = accountsRest.deleteAccount(uid);
@@ -74,7 +80,7 @@
});
}
- // アカウントパスワードの変更
+ // 対象のアカウントパスワードの変更
public void changePw(String uid, String oldPw, String newPw, String token) {
Call call = accountsRest.changePw(uid, oldPw, newPw, token);
@@ -94,7 +100,7 @@
});
}
- // アカウント名の変更
+ // 対象のアカウント名の変更
public void changeName(String uid, String name, String token) {
Call call = accountsRest.changeName(uid, name, token);
@@ -113,4 +119,44 @@
}
});
}
+
+ // 対象のアカウントがした投稿の全取得
+ public void getAccountPosts(String uid) {
+ Call> call = accountsRest.getAccountPosts(uid);
+
+ call.enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> call, Response> response) {
+ if (response.isSuccessful()) {
+ accountPostsLiveData.setValue(response.body());
+ } else {
+ System.out.println("response error");
+ }
+ }
+ @Override
+ public void onFailure(Call> call, Throwable t) {
+ System.out.println("correspondence error");
+ }
+ });
+ }
+
+ // 対象のアカウントがした投稿の削除
+ public void deleteAccountPost(String sid, String uid, String pid, String token) {
+ Call call = accountsRest.deletePost(sid, uid, pid, token);
+
+ call.enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ if (response.isSuccessful()) {
+ System.out.println("successful");
+ } else {
+ System.out.println("response error");
+ }
+ }
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ System.out.println("correspondence error");
+ }
+ });
+ }
}
diff --git a/app/src/main/java/com/example/nemophila/viewmodels/PostsViewModel.java b/app/src/main/java/com/example/nemophila/viewmodels/PostsViewModel.java
index c783810..30199fe 100644
--- a/app/src/main/java/com/example/nemophila/viewmodels/PostsViewModel.java
+++ b/app/src/main/java/com/example/nemophila/viewmodels/PostsViewModel.java
@@ -23,23 +23,23 @@
final private Retrofit retrofit;
final private PostsRest postsRest;
private String pid;
-// private ArrayList postJson = new ArrayList<>();
+ private ArrayList postJson;
//LiveData
final private MutableLiveData> accountPostsLiveData;
final private MutableLiveData> shopPostsLiveData;
-
//コンストラクタ
public PostsViewModel() {
this.accountPostsLiveData = new MutableLiveData<>();
this.shopPostsLiveData = new MutableLiveData<>();
this.retrofit = new Retrofit.Builder()
- .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/Nemophila/")
+ .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/nemophila/")
.addConverterFactory(JacksonConverterFactory.create())
.build();
this.postsRest = retrofit.create(PostsRest.class);
this.pid = null;
+ this.postJson = new ArrayList<>();
}
//getter
@@ -91,20 +91,39 @@
return pid;
}
- public void getShopPostJson(String sid) {
- Call> call = postsRest.getShopPosts(sid);
- call.enqueue(new Callback>() {
+ //PostJsonからPostを作成し,それをLiveDataにセット
+ public void getShopPosts(String sid) {
+ System.out.println("通信前" + postJson.get(0));
+ ArrayList posts = new ArrayList<>();
+ getShopPostJson(sid);
+ System.out.println("通信after" + postJson);
+ for(PostJson pj: postJson) {
+ Post post = new Post(pj);
+ posts.add(post);
+ }
+ shopPostsLiveData.setValue(posts);
+ System.out.println("完了しました");
+ }
+
+ //PostJsonを取得
+ private void getShopPostJson(String sid) {
+ Call> call = postsRest.getShopPosts(sid);
+ call.enqueue(new Callback>() {
@Override
- public void onResponse(Call> call, Response> response) {
+ public void onResponse(Call> call, Response> response) {
if (response.isSuccessful()) {
- shopPostsLiveData.setValue(response.body());
+ System.out.println("responseGood");
+ postJson = response.body();
} else {
+ System.out.println("responseError");
//レスポンスエラー
}
}
@Override
- public void onFailure(Call> call, Throwable t) {
+ public void onFailure(Call> call, Throwable t) {
+ System.out.println("networkError");
+ System.out.println(t);
//通信エラー
}
});
diff --git a/app/src/main/java/com/example/nemophila/viewmodels/ShopsViewModel.java b/app/src/main/java/com/example/nemophila/viewmodels/ShopsViewModel.java
index addd584..4f0d8d3 100644
--- a/app/src/main/java/com/example/nemophila/viewmodels/ShopsViewModel.java
+++ b/app/src/main/java/com/example/nemophila/viewmodels/ShopsViewModel.java
@@ -15,10 +15,14 @@
import retrofit2.Retrofit;
import retrofit2.converter.jackson.JacksonConverterFactory;
-public class ShopsViewModel extends ViewModel {
+public class ShopsViewModel extends TimerViewModel {
// フィールド
final private ShopsRest shopsRest;
final private Retrofit retrofit;
+ private double ux;
+ private double uy;
+ private double lx;
+ private double ly;
// ライブデータ
final private MutableLiveData> shopsLiveData;
@@ -33,12 +37,27 @@
this.shopsRest = retrofit.create(ShopsRest.class);
}
- public LiveData> getMembersLiveData() {
+ public LiveData> getShopsLiveData() {
return this.shopsLiveData;
}
+ @Override
+ public void update() {
+ updateShops();
+ // System.out.println("hogehoge");
+ }
+
// 画面を動かす, 又はGPSが移動する度に呼び出される
public void setViewArea(double ux, double uy, double lx, double ly) {
+ this.ux = ux;
+ this.uy = uy;
+ this.lx = lx;
+ this.ly = ly;
+
+ updateShops();
+ }
+
+ public void updateShops() {
// 画面内に収まる範囲の店舗を取得する
Call> call = shopsRest.getShops(ux, uy, lx, ly);
diff --git a/app/src/main/java/com/example/nemophila/viewmodels/TimerViewModel.java b/app/src/main/java/com/example/nemophila/viewmodels/TimerViewModel.java
new file mode 100644
index 0000000..3ec5dd4
--- /dev/null
+++ b/app/src/main/java/com/example/nemophila/viewmodels/TimerViewModel.java
@@ -0,0 +1,38 @@
+package com.example.nemophila.viewmodels;
+
+import com.example.nemophila.Nemophila;
+
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+import androidx.lifecycle.ViewModel;
+
+abstract class TimerViewModel extends ViewModel implements Runnable {
+ private ScheduledThreadPoolExecutor thread = null;
+ protected Nemophila nemophila;
+
+
+ //-----------------------------------------------------------------
+ // 一定間隔で呼び出す
+ @Override
+ public void run() {
+ update();
+ }
+
+ public abstract void update();
+
+ //-----------------------------------------------------------------
+ //何ミリ秒ごとにrun()を実行するかを決める
+ public void start(int interval, Nemophila nemophila) {
+ this.nemophila = nemophila;
+ thread = new ScheduledThreadPoolExecutor(1);
+ thread.scheduleWithFixedDelay(this, interval, 1000L, TimeUnit.MILLISECONDS);
+ }
+
+ //-----------------------------------------------------------------
+ //
+ public void stop() {
+ thread.shutdown();
+ }
+ //-----------------------------------------------------------------
+}
diff --git a/app/src/main/res/drawable/icon.jpg b/app/src/main/res/drawable/icon.jpg
deleted file mode 100644
index 6f2e35a..0000000
--- a/app/src/main/res/drawable/icon.jpg
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable/icon_current.jpg b/app/src/main/res/drawable/icon_current.jpg
new file mode 100644
index 0000000..6f2e35a
--- /dev/null
+++ b/app/src/main/res/drawable/icon_current.jpg
Binary files differ
diff --git a/app/src/main/res/layout/activity_change_pw.xml b/app/src/main/res/layout/activity_change_pw.xml
new file mode 100644
index 0000000..761857f
--- /dev/null
+++ b/app/src/main/res/layout/activity_change_pw.xml
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index d12efd2..79e37dc 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -10,22 +10,25 @@
android:id="@+id/LoginButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="Login"
+ android:text="@string/login"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintHorizontal_bias="0.5"
+ app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/editTextTextNewPassword" />
+ app:layout_constraintTop_toBottomOf="@+id/editTextTextNewPassword"
+ app:layout_constraintVertical_bias="0.2" />
@@ -34,10 +37,12 @@
android:id="@+id/editTextTextNewPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:autofillHints=""
android:ems="10"
- android:hint="@string/title_activity_login"
+ android:hint="@string/password"
android:inputType="textPassword"
android:minHeight="48dp"
+ android:textColorHint="#757575"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
@@ -47,10 +52,29 @@
android:id="@+id/SignUp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginTop="56dp"
- android:text="SignUp"
+ android:text="@string/signup"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/LoginButton" />
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_shop.xml b/app/src/main/res/layout/activity_shop.xml
index 108efca..397f53f 100644
--- a/app/src/main/res/layout/activity_shop.xml
+++ b/app/src/main/res/layout/activity_shop.xml
@@ -34,12 +34,14 @@
app:layout_constraintVertical_bias="0.032" />
+ app:layout_constraintTop_toBottomOf="@+id/shopName"
+ app:layout_constraintVertical_bias="0.582" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_shop_create.xml b/app/src/main/res/layout/activity_shop_create.xml
new file mode 100644
index 0000000..d8a164f
--- /dev/null
+++ b/app/src/main/res/layout/activity_shop_create.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_sign_up.xml b/app/src/main/res/layout/activity_sign_up.xml
index 8069609..ff65596 100644
--- a/app/src/main/res/layout/activity_sign_up.xml
+++ b/app/src/main/res/layout/activity_sign_up.xml
@@ -11,10 +11,12 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="204dp"
+ android:autofillHints=""
android:ems="10"
+ android:hint="@string/username"
android:inputType="textPersonName"
android:minHeight="48dp"
- android:text="Name"
+ android:textColorHint="#757575"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.502"
app:layout_constraintStart_toStartOf="parent"
@@ -25,10 +27,12 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
+ android:autofillHints=""
android:ems="10"
- android:hint="@string/title_activity_sign_up"
+ android:hint="@string/password"
android:inputType="textPassword"
android:minHeight="48dp"
+ android:textColorHint="#757575"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editTextTextUserName" />
@@ -38,7 +42,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="144dp"
- android:text="Make a new Account"
+ android:text="@string/make_a_new_account"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
diff --git a/app/src/main/res/layout/layout_shop_activity_posts.xml b/app/src/main/res/layout/layout_shop_activity_posts.xml
new file mode 100644
index 0000000..1e9ae11
--- /dev/null
+++ b/app/src/main/res/layout/layout_shop_activity_posts.xml
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d650b72..d95b0d2 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -8,5 +8,14 @@
SignUpActivity
TestActivity
GpsActivity
+ ShopCreateActivity
+ UserName
+ Make a new Account
+ Password
+ Login
+ password
+ SignUp
+ UserID
+ Forgot Password?
\ No newline at end of file