diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 1a4e8be..0fbac27 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -45,10 +45,11 @@
implementation(libs.converter.jackson)
implementation(libs.navigation.runtime.android)
implementation (libs.material.v1100)
+ implementation(libs.converter.scalars)
testImplementation(libs.junit)
androidTestImplementation(libs.ext.junit)
androidTestImplementation(libs.espresso.core)
implementation(libs.navigation.fragment)
implementation(libs.navigation.ui)
-
+ implementation(libs.viewpager2)
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e826e0d..0ff4bd5 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -34,6 +34,7 @@
+
mText;
+
+ public NotificationsViewModel() {
+ mText = new MutableLiveData<>();
+ mText.setValue("This is notifications fragment");
+ }
+
+ public LiveData getText() {
+ return mText;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/tampopo_client/viewmodels/FriendViewModel.java b/app/src/main/java/com/example/tampopo_client/viewmodels/FriendViewModel.java
index 9c4005c..91b8021 100644
--- a/app/src/main/java/com/example/tampopo_client/viewmodels/FriendViewModel.java
+++ b/app/src/main/java/com/example/tampopo_client/viewmodels/FriendViewModel.java
@@ -14,6 +14,7 @@
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.jackson.JacksonConverterFactory;
+import retrofit2.converter.scalars.ScalarsConverterFactory;
import retrofit2.http.Field;
public class FriendViewModel extends ViewModel {
@@ -27,6 +28,7 @@
public FriendViewModel(){
this.retrofit = new Retrofit.Builder()
.baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/tampopo/")
+ .addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(JacksonConverterFactory.create())
.build();
this.usersResource = retrofit.create(UserResource.class);
diff --git a/app/src/main/java/com/example/tampopo_client/views/FriendActivity.java b/app/src/main/java/com/example/tampopo_client/views/FriendActivity.java
index 4e60537..362994f 100644
--- a/app/src/main/java/com/example/tampopo_client/views/FriendActivity.java
+++ b/app/src/main/java/com/example/tampopo_client/views/FriendActivity.java
@@ -1,58 +1,78 @@
package com.example.tampopo_client.views;
-
+import android.app.Dialog;
+import android.content.Context;
+import android.content.Intent;
import android.os.Bundle;
-import android.view.LayoutInflater;
import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.ImageButton;
+import android.widget.ImageView;
+import android.widget.Toast;
-import androidx.activity.EdgeToEdge;
-import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
-import androidx.appcompat.widget.Toolbar;
-import androidx.core.graphics.Insets;
-import androidx.core.view.ViewCompat;
-import androidx.core.view.WindowInsetsCompat;
-import androidx.lifecycle.ViewModelProvider;
-import androidx.navigation.NavController;
-import androidx.navigation.Navigation;
-import com.example.tampopo_client.databinding.ActivityFriendBinding;
-import androidx.navigation.ui.AppBarConfiguration;
-import androidx.navigation.ui.NavigationUI;
+import androidx.viewpager2.widget.ViewPager2;
import com.example.tampopo_client.R;
-import com.google.android.material.bottomnavigation.BottomNavigationView;
+import com.example.tampopo_client.views.MyFragmentAdapter;
+import com.google.android.material.tabs.TabLayout;
+import com.google.android.material.tabs.TabLayoutMediator;
public class FriendActivity extends AppCompatActivity {
- private ActivityFriendBinding binding;
+
+ private ViewPager2 viewPager;
+ private TabLayout tabLayout;
+ private MyFragmentAdapter adapter;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_friend);
-// EdgeToEdge.enable(this);
-// setContentView(R.layout.activity_friend);
-// ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
-// Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
-// v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
-// return insets;
-// });
-// }
- binding = ActivityFriendBinding.inflate(getLayoutInflater());
- setContentView(binding.getRoot());
+ viewPager = findViewById(R.id.view_pager);
+ tabLayout = findViewById(R.id.tab_layout);
- Toolbar toolbar = findViewById(R.id.actionbar);
- setSupportActionBar(toolbar);
+ adapter = new MyFragmentAdapter(this);
+ viewPager.setAdapter(adapter);
- BottomNavigationView navView = findViewById(R.id.nav_view);
- // Passing each menu ID as a set of Ids because each
- // menu should be considered as top level destinations.
- AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
- R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications)
- .build();
- NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_activity_main);
- NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
- NavigationUI.setupWithNavController(binding.navView, navController);
+ new TabLayoutMediator(tabLayout, viewPager, (tab, position) -> {
+ if (position == 0) {
+ tab.setText("フレンド");
+ } else if (position == 1) {
+ tab.setText("保留中");
+ }
+ }).attach();
+
+ //フレンド画面からメイン画面への遷移
+ ImageButton buttonReturn = (ImageButton) findViewById(R.id.buttonReturn);
+ buttonReturn.setOnClickListener(new View.OnClickListener() {
+ public void onClick(View v) {
+ Intent intent = new Intent(FriendActivity.this, MainActivity.class);
+ startActivity(intent);
+ }
+ });
+ ImageButton openDialogButton = findViewById(R.id.buttonAdd);
+ openDialogButton.setOnClickListener(v -> showAddFriendDialog(this));
+
+ }
+ public void showAddFriendDialog(Context context) {
+ Dialog dialog = new Dialog(context);
+ dialog.setContentView(R.layout.dialog_add_friend);
+ dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
+ dialog.getWindow().setDimAmount(0.5f);
+ EditText editFriendId = dialog.findViewById(R.id.edit_friend_id);
+ Button buttonSearch = dialog.findViewById(R.id.button_search);
+ ImageView buttonClose = dialog.findViewById(R.id.button_close);
+
+ buttonClose.setOnClickListener(v -> dialog.dismiss());
+
+ buttonSearch.setOnClickListener(v -> {
+ String id = editFriendId.getText().toString();
+ // TODO: IDを使って検索処理を行う
+ Toast.makeText(context, "検索: " + id, Toast.LENGTH_SHORT).show();
+ });
+
+ dialog.show();
}
-
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/example/tampopo_client/views/FriendReceivedFragment.java b/app/src/main/java/com/example/tampopo_client/views/FriendReceivedFragment.java
index abe19ae..a836ccc 100644
--- a/app/src/main/java/com/example/tampopo_client/views/FriendReceivedFragment.java
+++ b/app/src/main/java/com/example/tampopo_client/views/FriendReceivedFragment.java
@@ -56,6 +56,10 @@
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_friend_received_list, container, false);
+ // Add some sample items.
+ for (int i = 1; i <= 30; i++)
+ FriendRequestContent.addItem(new FriendRequestContent.FriendRequestItem(Integer.toString(i), "ユーザ名" + i));
+
// Set the adapter
if (view instanceof RecyclerView) {
Context context = view.getContext();
diff --git a/app/src/main/java/com/example/tampopo_client/views/MainActivity.java b/app/src/main/java/com/example/tampopo_client/views/MainActivity.java
index 21e3aae..5fb81c2 100644
--- a/app/src/main/java/com/example/tampopo_client/views/MainActivity.java
+++ b/app/src/main/java/com/example/tampopo_client/views/MainActivity.java
@@ -1,7 +1,6 @@
package com.example.tampopo_client.views;
import android.content.Intent;
-import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
@@ -11,7 +10,6 @@
import android.widget.GridView;
import android.widget.ImageButton;
import android.widget.LinearLayout;
-import android.widget.TextView;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AlertDialog;
@@ -19,8 +17,12 @@
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
+import androidx.lifecycle.ViewModelProvider;
import com.example.tampopo_client.R;
+import com.example.tampopo_client.Tampopo;
+import com.example.tampopo_client.viewmodels.ActivityViewModel;
+import com.example.tampopo_client.viewmodels.UserViewModel;
public class MainActivity extends AppCompatActivity {
@@ -29,9 +31,13 @@
private GridView wordGroup;
private LinearLayout messageList;
//アクティビティの選択肢
- private String[] words = {"ひまnow","あそぼ!","そろそろ会いたない〜?", "勉強なう", "電話しよ~", "お風呂入ってくる~","今暇だよー!","いそがしい~!!"};
+ private String[] words = {"ひまnow", "あそぼ!", "そろそろ会いたない〜?", "勉強なう", "電話しよ~", "お風呂入ってくる~", "今暇だよー!", "いそがしい~!!"};
private Button openDialogButton;
+ ActivityViewModel activityViewModel;
+ Tampopo tampopo;
+
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -52,6 +58,12 @@
}
});
+ //activityViewModelを宣言する
+ activityViewModel = new ViewModelProvider(this).get(ActivityViewModel.class);
+ //tampopoを宣言する
+ tampopo = (Tampopo) getApplication();
+
+
//メイン画面から通知一覧画面への遷移
// ImageButton notificationButton = (ImageButton)findViewById(R.id.notification);
// notificationButton.setOnClickListener(new View.OnClickListener() {
@@ -77,6 +89,7 @@
openDialogButton.setOnClickListener(v -> showInputDialog());
}
+
private void showInputDialog() {
// カスタムビュー読み込み
View dialogView = getLayoutInflater().inflate(R.layout.main_dialog, null);
@@ -84,6 +97,10 @@
GridView wordGrid = dialogView.findViewById(R.id.wordGrid);
ImageButton sendButton = dialogView.findViewById(R.id.sendButton);
+ //tokenとuserIdを代入する
+ String token = tampopo.getToken();
+ String userId = tampopo.getUserId();
+
// 語群セット
ArrayAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, words);
wordGrid.setAdapter(adapter);
@@ -107,19 +124,20 @@
String message = editTextInput.getText().toString().trim();
int length = message.length();
if (!message.isEmpty()) {
- if(length > 20){
+ activityViewModel.createActivity(userId, token, message);
+ if (length > 20) {
openDialogButton.setTextSize(7);
- }else if(length > 10){
+ } else if (length > 10) {
openDialogButton.setTextSize(10);
- }else{
+ } else {
openDialogButton.setTextSize(12);
}
openDialogButton.setMaxLines(10);
- openDialogButton.setLineSpacing(4.0f,1.2f);
+ openDialogButton.setLineSpacing(4.0f, 1.2f);
openDialogButton.setText(message);
editTextInput.setText("");
dialog.dismiss(); // ダイアログを閉じる
- }else{
+ } else {
openDialogButton.setText("");
}
});
@@ -127,21 +145,4 @@
dialog.show();
}
- private void addMessageToHome(String message) {
- TextView textView = new TextView(this);
- textView.setText(message);
- textView.setPadding(10, 10, 10, 10);
- textView.setBackgroundColor(Color.parseColor("#E0E0E0"));
- int length = message.length();
- if(length > 10){
- textView.setTextSize(5);
- }else if(length > 7){
- textView.setTextSize(8);
- }else{
- textView.setTextSize(10);
- }
- textView.setMaxLines(10);
- textView.setLineSpacing(4.0f,1.2f);
- messageList.addView(textView);
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/tampopo_client/views/MyFragmentAdapter.java b/app/src/main/java/com/example/tampopo_client/views/MyFragmentAdapter.java
new file mode 100644
index 0000000..5786821
--- /dev/null
+++ b/app/src/main/java/com/example/tampopo_client/views/MyFragmentAdapter.java
@@ -0,0 +1,30 @@
+package com.example.tampopo_client.views;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
+import androidx.viewpager2.adapter.FragmentStateAdapter;
+
+public class MyFragmentAdapter extends FragmentStateAdapter {
+
+ public MyFragmentAdapter(@NonNull FragmentActivity fragmentActivity) {
+ super(fragmentActivity);
+ }
+
+ @NonNull
+ @Override
+ public Fragment createFragment(int position) {
+ if (position == 0) {
+ // フラグメント①:申請を受けた
+ return new FriendListFragment();
+ } else {
+ // フラグメント②:友達リスト
+ return new FriendReceivedFragment();
+ }
+ }
+
+ @Override
+ public int getItemCount() {
+ return 2;
+ }
+}
diff --git a/app/src/main/java/com/example/tampopo_client/views/MyFriendRequestRecyclerViewAdapter.java b/app/src/main/java/com/example/tampopo_client/views/MyFriendRequestRecyclerViewAdapter.java
index 9640389..7df07fc 100644
--- a/app/src/main/java/com/example/tampopo_client/views/MyFriendRequestRecyclerViewAdapter.java
+++ b/app/src/main/java/com/example/tampopo_client/views/MyFriendRequestRecyclerViewAdapter.java
@@ -34,7 +34,7 @@
public void onBindViewHolder(final ViewHolder holder, int position) {
holder.mItem = mValues.get(position);
//holder.mIdView.setText(mValues.get(position).id);
- holder.mContentView.setText(mValues.get(position).content);
+ holder.mContentView.setText(mValues.get(position).name);
}
@Override
diff --git a/app/src/main/java/com/example/tampopo_client/views/placeholder/FriendRequestContent.java b/app/src/main/java/com/example/tampopo_client/views/placeholder/FriendRequestContent.java
index cd141e8..7882221 100644
--- a/app/src/main/java/com/example/tampopo_client/views/placeholder/FriendRequestContent.java
+++ b/app/src/main/java/com/example/tampopo_client/views/placeholder/FriendRequestContent.java
@@ -13,26 +13,26 @@
//各アイテムにアクセスするためのID付きマップ*/
public static final Map ITEM_MAP = new HashMap();
- private static final int COUNT = 30; //データ30個作成
+ public static final int COUNT = 30; //データ30個作成
//アイテムを初期化時に追加する
- static {
- // Add some sample items.
- for (int i = 1; i <= COUNT; i++) {
- addItem(createPlaceholderItem(i));
- }
- }
+// static {
+// // Add some sample items.
+// for (int i = 1; i <= COUNT; i++) {
+// addItem(createPlaceholderItem(i));
+// }
+// }
//アイテムをリストとマップの両方に登録するメソッド
- private static void addItem(FriendRequestItem item) {
+ public static void addItem(FriendRequestItem item) {
ITEMS.add(item);
ITEM_MAP.put(item.id, item);
}
//位置(1,2,...)に応じたFriendRequestItem を生成するメソッド
- private static FriendRequestItem createPlaceholderItem(int position) {
- return new FriendRequestItem(String.valueOf(position), "ユーザー名 ", makeDetails(position));
- }
+// public static FriendRequestItem createPlaceholderItem(int position) {
+// return new FriendRequestItem(String.valueOf(position), "ユーザー名 ", makeDetails(position));
+// }
//詳細説明用の文字列を作るメソッド。position に応じて「詳細情報」がたくさん増える
private static String makeDetails(int position) {
@@ -47,18 +47,18 @@
//FriendRequestを表す1件のデータ
public static class FriendRequestItem {
public final String id; //アイテムのID
- public final String content; //表示される名前
- public final String details; //詳細説明
+ public final String name; //表示される名前
+ //public final String details; //詳細説明
- public FriendRequestItem(String id, String content, String details) {
+ public FriendRequestItem(String id, String name) {
this.id = id;
- this.content = content;
- this.details = details;
+ this.name = name;
+ //this.details = details;
}
@Override
public String toString() {
- return content;
+ return name + " " + id;
}
}
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_friend.xml b/app/src/main/res/layout/activity_friend.xml
index 880385d..5217891 100644
--- a/app/src/main/res/layout/activity_friend.xml
+++ b/app/src/main/res/layout/activity_friend.xml
@@ -1,86 +1,81 @@
-
+ android:background="#BDE6FA">
-
+
-
-
-
+ app:layout_constraintVertical_bias="0.016" />
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index ff32829..368f625 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -95,6 +95,7 @@
@@ -106,7 +107,7 @@
android:id="@+id/openDialogButton"
android:layout_width="158dp"
android:layout_height="53dp"
- android:backgroundTint="@color/white"
+ android:background="@android:color/transparent"
android:text="今何してる?"
android:textColor="@color/black"
app:layout_constraintBottom_toBottomOf="parent"
diff --git a/app/src/main/res/layout/dialog_add_friend.xml b/app/src/main/res/layout/dialog_add_friend.xml
new file mode 100644
index 0000000..4ea31db
--- /dev/null
+++ b/app/src/main/res/layout/dialog_add_friend.xml
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_friend_received.xml b/app/src/main/res/layout/fragment_friend_received.xml
index fa26f01..953cbb9 100644
--- a/app/src/main/res/layout/fragment_friend_received.xml
+++ b/app/src/main/res/layout/fragment_friend_received.xml
@@ -19,22 +19,22 @@
android:layout_margin="@dimen/text_margin"
android:textAppearance="?attr/textAppearanceListItem" />
-
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/bottom_nav_menu.xml b/app/src/main/res/menu/bottom_nav_menu.xml
index 1cec7c3..0e93f07 100644
--- a/app/src/main/res/menu/bottom_nav_menu.xml
+++ b/app/src/main/res/menu/bottom_nav_menu.xml
@@ -3,7 +3,7 @@
+ android:title="@string/title_home" />
@@ -15,9 +15,7 @@
-
+
diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml
deleted file mode 100644
index 5db87e3..0000000
--- a/app/src/main/res/navigation/mobile_navigation.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
-
\ 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 78d72ce..d2bcbac 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -3,9 +3,9 @@
ホーム画面からフレンド一覧への画面遷移ボタン
ホーム画面から通知一覧への画面遷移ボタン
ホーム画面から設定画面への画面遷移ボタン
- フレンド
- ダッシュボード
- 保留中
+ フレンド
+ 申請中
+ 保留中
友達リスト
\ No newline at end of file
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index e461ba8..561933d 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -15,6 +15,8 @@
converterJackson = "3.0.0"
navigationRuntimeAndroid = "2.9.0"
navigation = "2.6.0"
+viewpager2 = "1.0.0"
+converterScalars = "3.0.0"
[libraries]
junit = { group = "junit", name = "junit", version.ref = "junit" }
@@ -33,6 +35,8 @@
navigation-runtime-android = { group = "androidx.navigation", name = "navigation-runtime-android", version.ref = "navigationRuntimeAndroid" }
navigation-fragment = { module = "androidx.navigation:navigation-fragment", version.ref = "navigation" }
navigation-ui = { module = "androidx.navigation:navigation-ui", version.ref = "navigation" }
+viewpager2 = { group = "androidx.viewpager2", name = "viewpager2", version.ref = "viewpager2" }
+converter-scalars = { group = "com.squareup.retrofit2", name = "converter-scalars", version.ref = "converterScalars" }
[plugins]