, 각 행 표시 4 문자열에서 일부 사용자 정보를 나열하려고합니다.사용자 지정 어댑터 ListView 오류
문자열의 길이는 Firebase
입니다.
나는 항상 약간의 오류가 발생합니다. 오류의 원인이나 다른 해결책에 대해 알고 싶습니다.
이
내 코드입니다 :MainActivity
public class SearchActivity extends AppCompatActivity {
private ListView mListView;
//public ArrayList<String> mUser = new ArrayList<>();
private String userID;
private String Lat;
private String Lng;
private Button mRefresh;
private String Name;
private String Birthday;
private String Gender;
private String Email;
private FirebaseAuth mAuth = FirebaseAuth.getInstance();
private FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
private DatabaseReference DatabaseReference = firebaseDatabase.getReference();
//private DatabaseReference DatabaseReference = firebaseDatabase.getReference().child("Users/");
//private DatabaseReference CoordenateReference = firebaseDatabase.getReference().child("Coordenate/");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
mListView = findViewById(R.id.listViewSearch);
FirebaseUser user = mAuth.getCurrentUser();
userID = user.getUid();
mRefresh = findViewById(R.id.buttonRefresh);
mRefresh.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DatabaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
listClean();
FirebaseUser user = mAuth.getCurrentUser();
userID = user.getUid();
Lat = dataSnapshot.child("Users").child(userID).child("Coordenates/Rute/Lat").getValue(String.class);
Lng = dataSnapshot.child("Users").child(userID).child("Coordenates/Rute/Lng").getValue(String.class);
DataSnapshot dS = dataSnapshot.child("Coordenate").child(Lat).child(Lng);
for(DataSnapshot Ds : dS.getChildren()) {
Object key = Ds.getKey();
String StringKey = String.valueOf(key);
getname(StringKey);
//mUser.add(getName(StringKey));
//mUser.add(Name);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(SearchActivity.this,"Error 404",Toast.LENGTH_SHORT).show();
}
});
}
});
}
private void getname(String ID){
final String IDfinal = ID;
Toast.makeText(SearchActivity.this,ID,Toast.LENGTH_SHORT).show();
DatabaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Name = dataSnapshot.child("Users").child(IDfinal).child("name").getValue(String.class);
Email = dataSnapshot.child("Users").child(IDfinal).child("email").getValue(String.class);
Gender = dataSnapshot.child("Users").child(IDfinal).child("gender").getValue(String.class);
Birthday = dataSnapshot.child("Users").child(IDfinal).child("data_birth").getValue(String.class);
list();
Toast.makeText(SearchActivity.this,Name,Toast.LENGTH_SHORT).show();
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(SearchActivity.this,"Error 404",Toast.LENGTH_SHORT).show();
}
});
}
private void list(){
//final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mUser);
//mListView.setAdapter(new customAdapter(this,new String[]{Name}));
//mUser.add(Name);
//arrayAdapter.notifyDataSetChanged();
setContentView(R.layout.activity_search);
List<UserInformation> userInformationsList = new ArrayList<>();
UserInformation userInformation = new UserInformation(Name,Email,Gender,Birthday);
userInformationsList.add(userInformation);
customAdapter customAdapterIntent= new customAdapter((ValueEventListener) this,R.layout.userslist,userInformationsList);
mListView.setAdapter(customAdapterIntent);
}
}
이 userslist.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/textNameList"
android:textSize="25dp"
android:textAlignment="textStart"
android:text="Name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="start"
android:layout_margin="10dp"/>
<TextView
android:id="@+id/textEmailList"
android:textSize="15dp"
android:textAlignment="textStart"
android:text="Age"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="start"
android:layout_margin="10dp"/>
<TextView
android:id="@+id/textBirthdayList"
android:textSize="15dp"
android:textAlignment="textStart"
android:text="Birthday"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="start"
android:layout_margin="10dp"/>
<TextView
android:id="@+id/textGenderList"
android:textSize="15dp"
android:textAlignment="textStart"
android:text="gender"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="start"
android:layout_margin="10dp"/>
인이
01 Userinformation.java입니다public class UserInformation {
private static String Name;
private static String Gender;
private static String Email;
private static String Birthday;
public UserInformation(String Name,String Gender,String Email,String Birthday){
this.Birthday=Birthday;
this.Email=Email;
this.Gender=Gender;
this.Name=Name;
}
public static String getName(){return Name;}
public static String getEmail(){return Email;}
public static String getGender(){return Gender;}
public static String getBirthday(){return Birthday;}
}
이 23,516,이것은
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.enrik.afrodita, PID: 2629
java.lang.ClassCastException:
com.example.enrik.afrodita.SearchActivity cannot be cast to
com.google.firebase.database.ValueEventListener
at
com.example.enrik.afrodita.SearchActivity.list(SearchActivity.java:130)
at
com.example.enrik.afodita.SearchActivity.access$1100(SearchActivity.java:24)
at
com.example.enrik.adita.Searchivity$2.onDataChange(SearchActivity.java:106)
at com.google.android.gms.internal.zzdtn.zza(Unknown Source)
at com.google.android.gms.internal.zzdvi.zzbur(Unknown Source)
at com.google.android.gms.internal.zzdvo.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
왜 당신은 너무 많은 ValueEventListener' –