У меня есть GridView
адаптер и пользовательский объект, который я пытаюсь вставить в него.
Я использовал этот учебник в качестве справочного.
Это не позволяет мне поместить мой ArrayList в мой GridAdapter:
Оскорбительная линия :
GridAdapter adapter = new GridAdapter(this, contactList);
Дана ошибка:
GridAdapter (android.content.Context,
com.example.user.myapp.CustomContact[])in GridAdapter cannot be applied
to (anonymous com.google.firebase.database.ValueEventListener,
java.util.ArrayList<com.example.user.myapp.CustomContact>)
1018 *
Вот и все ContactsActivity.java
:
public class ContactsActivity extends AppCompatActivity {
private DatabaseReference mFriendDatabase;
private DatabaseReference mRootRef;
private DatabaseReference mUsersDatabase;
private FirebaseAuth mAuth;
private String mCurrent_user_id;
private View mMainView;
private RecyclerView mFriendsList;
private ArrayAdapter dataAdapter;
private RelativeLayout individual_contact;
private GridView contacts_list;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contacts);
ArrayList<CustomContact> contactList = new ArrayList<>();
mAuth = FirebaseAuth.getInstance();
mRootRef = FirebaseDatabase.getInstance().getReference();
mCurrent_user_id = mAuth.getCurrentUser().getUid();
mFriendDatabase = FirebaseDatabase.getInstance().getReference().child("friends").child(mCurrent_user_id);
mFriendDatabase.keepSynced(true);
contacts_list = (GridView) findViewById(R.id.scrollView1);
individual_contact = (RelativeLayout) findViewById(R.id.mylist);
DatabaseReference usersRef = FirebaseDatabase.getInstance().getReference().child("users");
usersRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot friendKeySnapshot: dataSnapshot.getChildren()) {
String friendKey = friendKeySnapshot.getKey();
usersRef.child(friendKey).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot friendSnapshot) {
String friendName = friendSnapshot.child("username").getValue(String.class);
String friendPicture = friendSnapshot.child("image_url").getValue(String.class);
contactList.add(
new CustomContact(friendName, friendPicture)
);
GridAdapter adapter = new GridAdapter(this, contactList);
contacts_list.setAdapter(adapter);
//add event listener so we can handle clicks
AdapterView.OnItemClickListener adapterViewListener = new AdapterView.OnItemClickListener() {
//on click
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
CustomContact customContact = contactList.get(position);
Intent intent = new Intent(ContactsActivity.this, MessageActivity.class);
intent.putExtra("username", customContact.getUsername());
intent.putExtra("ImageURL", customContact.getImageURL());
startActivity(intent);
}
};
//set the listener to the list view
contacts_list.setOnItemClickListener(adapterViewListener);
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
});
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
});
}
}
РЕДАКТИРОВАТЬ # 1:
Вот мой CustomContact.java
public class CustomContact {
//Store username string
private String username;
//Store image url
private String ImageURL;
private Boolean featured;
//Constructor
public CustomContact(String username, String ImageURL){
this.username = username;
this.ImageURL = ImageURL;
this.featured = featured;
}
//getters
public String getUsername() { return username; }
public String getImageURL() { return ImageURL; }
public Boolean getFeatured(){return featured; }
}