Kyou/layout #12

Merged
Asura146 merged 4 commits from kyou/layout into main 2024-01-16 02:56:08 +00:00
6 changed files with 138 additions and 13 deletions
Showing only changes of commit e1ec10e981 - Show all commits

View File

@ -104,6 +104,7 @@ public class HomeFragment extends Fragment {
}
});
//デバック用ボタン
view.findViewById(R.id.bt_debug).setOnClickListener( v -> {
Toast.makeText(getContext(), PreferenceManager.getDefaultSharedPreferences(getContext().getApplicationContext()).getString("bluetooth_device1", "none"), Toast.LENGTH_SHORT).show();
});

View File

@ -80,7 +80,8 @@ public class QRFragment extends Fragment {
//読み取ったQRコードがChiled Guard用サイトのドメインを含むかの判定
if(!((result.getContents()).contains("https://practicefirestore1-8808c.web.app/"))) {
Toast.makeText(getContext(), "Chiled Guardに対応するQRコードではありません", Toast.LENGTH_LONG).show();
} else {
}
else {
//URLの表示
Toast.makeText(getContext(), result.getContents(), Toast.LENGTH_SHORT).show();
//ブラウザを起動しURL先のサイトを開く

View File

@ -1,6 +1,8 @@
package com.example.childguard;
import android.bluetooth.BluetoothAdapter;
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.LayoutInflater;
@ -10,22 +12,26 @@ import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.function.Predicate;
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ItemViewHolder> {
ArrayList<String[]> deviceList;
Context applicationContext;
View parentView;
// Constructor
public RecyclerAdapter(ArrayList<String[]> deviceList, Context applicationContext) {
public RecyclerAdapter(ArrayList<String[]> deviceList, Context applicationContext, View parentView) {
// Init
Log.d("RecyclerAdapter", "Constructor called");
this.deviceList = deviceList;
this.applicationContext = applicationContext;
this.parentView = parentView;
}
@NonNull
@ -42,14 +48,24 @@ public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ItemVi
holder.textView.setOnClickListener( v -> {
// アラートダイアログを表示
new androidx.appcompat.app.AlertDialog.Builder(v.getContext())
new AlertDialog.Builder(v.getContext())
.setTitle("登録")
.setMessage("このデバイスを登録しますか?")
.setPositiveButton(android.R.string.ok, (dialog, which) -> {
// OK button pressed
Toast.makeText(v.getContext(), "OK button clicked", Toast.LENGTH_SHORT).show();
Toast.makeText(v.getContext(), deviceList.get(position)[1], Toast.LENGTH_SHORT).show();
PreferenceManager.getDefaultSharedPreferences(this.applicationContext).edit().putString("bluetooth_device1", deviceList.get(position)[1]).apply();
//共有プリファレンスに保存
SharedPreferences sharedPreferences=PreferenceManager.getDefaultSharedPreferences(this.applicationContext);
sharedPreferences.edit().putString("bluetooth_device_id", deviceList.get(position)[1]).apply();
sharedPreferences.edit().putString("bluetooth_device_name",deviceList.get(position)[0]).apply();
Toast.makeText(v.getContext(),PreferenceManager.getDefaultSharedPreferences(this.applicationContext).getString("bluetooth_device_id","none"), Toast.LENGTH_SHORT).show();
TextView textView = this.parentView.findViewById(R.id.registered_device);
textView.setText(PreferenceManager.getDefaultSharedPreferences(this.applicationContext).getString("bluetooth_device_name","none"));
})
.setNegativeButton(android.R.string.cancel, null)
.show();

View File

@ -0,0 +1,86 @@
package com.example.childguard;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
//RecyclerView.Adapterクラスを継承
public class RecyclerAdapter2 extends RecyclerView.Adapter<ItemViewHolder> {
ArrayList<String> arrayList;
//RecyclerAdapterのコンストラクタ
public RecyclerAdapter2(ArrayList<String> arrayList, Context applicationContext) {
this.arrayList = arrayList;
}
//新しいViewHolderを生成すると呼び出される
@NonNull
@Override
public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
//recycler_row.xmlをactivity_main.xmlの部品にする
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.recycler_row, parent, false);
//新しいViewHolderを作成
//ItemViewHolderクラスを呼び出す
ItemViewHolder holder = new ItemViewHolder(view);
//クリックイベントを登録
holder.itemView.setOnClickListener(v -> {
//クリックされた行を取得
int position = holder.getAdapterPosition();
//クリックされた文字をトースト表示
Toast.makeText(v.getContext(), arrayList.get(position), Toast.LENGTH_SHORT).show();
//クリックされた行を削除
arrayList.remove(position);
//行が削除されたことを画面に通知
notifyItemRemoved(position);
});
//生成したViewHolderを戻す
return holder;
}
//1行分のレイアウトの詳細設定
@Override
public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
//指定された位置の値を取得
holder.getTextView().setText(arrayList.get(position));
}
//ArrayListのデータ件数を取得
@Override
public int getItemCount() {
return arrayList.size();
}
}
//RecyclerView.ViewHolderクラスを継承
class ItemViewHolder extends RecyclerView.ViewHolder {
private final TextView textView;
//ItemViewHolderのコンストラクタ
public ItemViewHolder(View view) {
super(view);
//ViewHolderのビューにテキストを定義する
textView = view.findViewById(R.id.textView1);
}
//テキストの値を取得
public TextView getTextView() {
return textView;
}
}

View File

@ -1,5 +1,6 @@
package com.example.childguard;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
@ -15,11 +16,13 @@ import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Objects;
@ -100,9 +103,9 @@ public class bluetooth_setupFragment extends Fragment {
}
Set<BluetoothDevice> pairedDevices = bluetoothAdapter.getBondedDevices();
RecyclerView recyclerView = view.findViewById(R.id.recyclerView1);
RecyclerView recyclerView1 = view.findViewById(R.id.recyclerView1);
//RecyclerViewのサイズを固定
recyclerView.setHasFixedSize(true);
recyclerView1.setHasFixedSize(true);
//RecyclerViewに区切り線を入れる
// RecyclerView.ItemDecoration itemDecoration =
@ -111,7 +114,8 @@ public class bluetooth_setupFragment extends Fragment {
//レイアウトマネージャを設
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getContext());
recyclerView.setLayoutManager(layoutManager);
recyclerView1.setLayoutManager(layoutManager);
//recyclerView2.setLayoutManager(layoutManager);
//リスト構造(String型の可変長の配列)を宣言
ArrayList<String[]> arrayList = new ArrayList<>();
@ -134,10 +138,16 @@ public class bluetooth_setupFragment extends Fragment {
Log.d("b", s[0]);
}
Log.d(" ", String.valueOf(arrayList.size()));
RecyclerAdapter adapter = new RecyclerAdapter(arrayList, requireActivity().getApplicationContext());
RecyclerAdapter adapter = new RecyclerAdapter(arrayList, requireActivity().getApplicationContext(), view);
//RecyclerViewとAdapterの結び付け
recyclerView.setAdapter(adapter);
recyclerView1.setAdapter(adapter);
TextView textView=view.findViewById(R.id.registered_device);
textView.setText(PreferenceManager.getDefaultSharedPreferences(requireActivity().getApplicationContext()).getString("bluetooth_device_name","none"));
}
return view;

View File

@ -10,17 +10,28 @@
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="登録可能デバイス"
/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical"/>
<TextView
android:id="@+id/click_device"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="登録済みデバイス"
/>
<TextView
android:id="@+id/registered_device"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="50dp"/>
</LinearLayout>