RecyclerAdapterのリファクタリング, レイアウト修正

This commit is contained in:
ろむねこ 2024-01-11 14:49:32 +09:00
parent b9546b4826
commit 4bb63c0fd2
No known key found for this signature in database
GPG Key ID: FA1F39A1BA37D168
2 changed files with 31 additions and 59 deletions

View File

@ -12,77 +12,49 @@ import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList; import java.util.ArrayList;
public class RecyclerAdapter extends RecyclerView.Adapter<ItemViewHolder> { public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ItemViewHolder> {
ArrayList<String> arrayListDN=new ArrayList<>(); ArrayList<String[]> deviceList;
ArrayList<String> arrayListDA=new ArrayList<>();
//RecyclerAdapterのコンストラクタ // Constructor
public RecyclerAdapter(ArrayList<String[]> arrayList) { public RecyclerAdapter(ArrayList<String[]> deviceList) {
for (String[] deviceInfo:arrayList) { Log.d("RecyclerAdapter", "Constructor");
this.arrayListDN.add(deviceInfo[0]); // Init
Log.d("c",deviceInfo[0]); this.deviceList = deviceList;
}
for (String[] deviceInfo:arrayList) {
this.arrayListDA.add(deviceInfo[1]);
Log.d("c",deviceInfo[1]);
}
} }
//新しいViewHolderを生成すると呼び出される
@NonNull @NonNull
@Override @Override
public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { public RecyclerAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
Log.d("RecyclerAdapter", "onCreateViewHolder");
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View itemView = inflater.inflate(R.layout.recycler_row, parent, false);
//recycler_row.xmlをactivity_main.xmlの部品にする return new ItemViewHolder(itemView);
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(),arrayListDA.get(position),Toast.LENGTH_SHORT).show();
});
//生成したViewHolderを戻す
return holder;
} }
//1行分のレイアウトの詳細設定
@Override @Override
public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) { public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
//指定された位置の値を取得 Log.d("RecyclerAdapter", "onBindViewHolder");
holder.getTextView().setText(arrayListDN.get(position)); holder.textView.setText(deviceList.get(position)[0]);
holder.textView.setOnClickListener( v -> {
Toast.makeText(v.getContext(), deviceList.get(position)[1], Toast.LENGTH_SHORT).show();
});
} }
//ArrayListのデータ件数を取得
@Override @Override
public int getItemCount() { public int getItemCount() {
return arrayListDN.size(); Log.d("RecyclerAdapter", "getItemCount");
return deviceList.size();
}
static class ItemViewHolder extends RecyclerView.ViewHolder {
TextView textView;
public ItemViewHolder(@NonNull View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.textView1);
} }
} }
//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,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="wrap_content">
<TextView <TextView
android:id="@+id/textView1" android:id="@+id/textView1"
android:layout_width="match_parent" android:layout_width="match_parent"