現在、Android Studio、Firebase Real Time Databaseを使用してアプリケーション開発を行っています。
以下のようにリストを画面に表示させたいのですが、データが読み取れていないのか表示できない状態となっています。
何が原因なのかお分かりの方、ご教授頂けますでしょうか。
以下、関連部分のコードになります。
activity_tests.xml
XML
1<?xml version="1.0" encoding="utf-8"?> 2<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 8 tools:context=".Tests"> 9 10 11 <com.google.android.material.appbar.AppBarLayout 12 android:layout_width="match_parent" 13 android:layout_height="wrap_content" 14 android:theme="@style/AppTheme.AppBarOverlay"> 15 16 <androidx.appcompat.widget.Toolbar 17 android:id="@+id/toolbar" 18 android:layout_width="match_parent" 19 android:layout_height="?android:attr/actionBarSize" 20 android:background="?android:attr/colorPrimary" 21 app:popupTheme="@style/AppTheme.PopupOverlay" /> 22 23 </com.google.android.material.appbar.AppBarLayout> 24 25 <include layout="@layout/content_tests" /> 26 27 28 29</RelativeLayout>
content_tests.xml
XML
1<?xml version="1.0" encoding="utf-8"?> 2<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:layout_marginTop="?android:attr/actionBarSize" 6 > 7 8 <ListView 9 android:layout_width="match_parent" 10 android:layout_height="match_parent" 11 android:id="@+id/test_listview"> 12 13 </ListView> 14 <ProgressBar 15 android:id="@+id/progressBar" 16 android:layout_width="30dp" 17 android:layout_height="30dp" 18 android:layout_gravity="center|bottom" 19 android:layout_marginBottom="20dp" 20 android:visibility="gone" /> 21</FrameLayout>
test_item.xml
XML
1<?xml version="1.0" encoding="utf-8"?> 2<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" android:layout_height="wrap_content" 4 android:layout_marginStart="@dimen/activity_horizontal_margin" 5 android:layout_marginBottom="@dimen/activity_horizontal_margin"> 6 7 <TextView 8 android:id="@+id/item_textView" 9 android:layout_width="wrap_content" 10 android:layout_height="?android:actionBarSize" 11 android:layout_alignParentTop="true" 12 android:layout_toEndOf="@+id/item_imageView" 13 android:gravity="center_vertical|center_horizontal"/> 14 15 <ImageView 16 android:id="@+id/item_imageView" 17 android:layout_width="?android:actionBarSize" 18 android:layout_height="?android:actionBarSize" /> 19 <Button 20 android:layout_margin="5dp" 21 android:layout_width="wrap_content" 22 android:layout_height="wrap_content" 23 android:gravity="center" 24 android:id="@+id/item_button" 25 android:background="@color/colorPrimaryDark" 26 android:layout_alignParentEnd="true"/> 27 28</RelativeLayout>
ResultsAdmin.java
Java
1package com.anondev.gaurav.geval; 2 3import android.content.Context; 4import android.content.Intent; 5import androidx.annotation.NonNull; 6import androidx.annotation.Nullable; 7import androidx.core.content.ContextCompat; 8import androidx.appcompat.app.AppCompatActivity; 9import android.os.Bundle; 10import androidx.appcompat.widget.Toolbar; 11import android.util.Log; 12import android.view.LayoutInflater; 13import android.view.View; 14import android.view.ViewGroup; 15import android.widget.ArrayAdapter; 16import android.widget.Button; 17import android.widget.ImageView; 18import android.widget.ListView; 19import android.widget.ProgressBar; 20import android.widget.TextView; 21 22import com.google.firebase.auth.FirebaseAuth; 23import com.google.firebase.database.DataSnapshot; 24import com.google.firebase.database.DatabaseError; 25import com.google.firebase.database.DatabaseReference; 26import com.google.firebase.database.FirebaseDatabase; 27import com.google.firebase.database.ValueEventListener; 28 29import java.util.ArrayList; 30 31public class ResultsAdmin extends AppCompatActivity { 32 33 private FirebaseDatabase database; 34 private FirebaseAuth auth; 35 private DatabaseReference myRef; 36 private ProgressBar progressBar; 37 private ListView listView; 38 private ResultsAdmin.TestAdapter testAdapter; 39 ArrayList<String> result=new ArrayList<>(); 40 41 @Override 42 protected void onCreate(Bundle savedInstanceState) { 43 auth=FirebaseAuth.getInstance(); 44 super.onCreate(savedInstanceState); 45 setContentView(R.layout.activity_tests); 46 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 47 setSupportActionBar(toolbar); 48 progressBar = (ProgressBar) findViewById(R.id.progressBar); 49 progressBar.setVisibility(View.VISIBLE); 50 database=FirebaseDatabase.getInstance(); 51 myRef=database.getReference(); 52 listView=findViewById(R.id.test_listview); 53 testAdapter=new ResultsAdmin.TestAdapter(ResultsAdmin.this,result); 54 listView.setAdapter(testAdapter); 55 getResults(); 56 } 57 58 public void getResults(){ 59 60 myRef.child("Results").addListenerForSingleValueEvent(new ValueEventListener() { 61 @Override 62 public void onDataChange(@NonNull DataSnapshot dataSnapshot) { 63 result.clear(); 64 for(DataSnapshot snapshot:dataSnapshot.getChildren()){ 65 result.add(snapshot.getKey()); //keyを取得している。Verbal~のこと。 66 } 67 testAdapter.dataList=result; 68 testAdapter.notifyDataSetChanged(); 69 progressBar.setVisibility(View.GONE); 70 Log.e("The read success: " ,"su"+result.size()); 71 } 72 73 @Override 74 public void onCancelled(@NonNull DatabaseError databaseError) { 75 progressBar.setVisibility(View.GONE); 76 Log.e("The read failed: " ,databaseError.getMessage()); 77 } 78 }); 79 } 80 class TestAdapter extends ArrayAdapter<String> { 81 private Context mContext; 82 ArrayList<String> dataList; 83 public TestAdapter( Context context,ArrayList<String> list) { 84 super(context, 0 , list); 85 mContext = context; 86 dataList = list; 87 } 88 89 @NonNull 90 @Override 91 public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) { 92 View listItem = convertView; 93 if(listItem == null) 94 listItem = LayoutInflater.from(mContext).inflate(R.layout.test_item,parent,false); 95 ((ImageView)listItem.findViewById(R.id.item_imageView)).setImageDrawable(ContextCompat.getDrawable(mContext,R.drawable.ic_assessment_black_24dp)); 96 ((TextView)listItem.findViewById(R.id.item_textView)).setText(dataList.get(position)); 97 ((Button)listItem.findViewById(R.id.item_button)).setText("View"); 98 ((Button)listItem.findViewById(R.id.item_button)).setOnClickListener(new View.OnClickListener() { 99 @Override 100 public void onClick(View view) { 101 Intent intent=new Intent(ResultsAdmin.this,ResultsAdminDetailed.class); 102 intent.putExtra("test",dataList.get(position)); 103 startActivity(intent); 104 } 105 }); 106 return listItem; 107 } 108 } 109 110}
Firebase Real Time Databaseのデータ構造
あなたの回答
tips
プレビュー