J'utilise Retrofit pour charger les données de mon serveur dans un RecyclerView
. J'ai implémenté avec succès les méthodes de conversion Get
, et Post
mais je suis confronté à quelques problèmes pour les Put
et Delete
. Depuis ReclyclerView
nécessite un Adapter
pour charger les données, et je dois obtenir la position de la ligne que je clique, je devais implémenter le onKeyPressed
(parce que j'utilise et EditText) à l'intérieur de mon Adapter
.Appel d'une méthode depuis Activity in Adapter
Le problème est que la méthode qui appelle mon Interceptor
, l'appel Retrofit et tout est dans mon Activity
. J'ai donc décidé d'appeler la méthode de cette activité à l'intérieur de mon adaptateur pour faire la mise et la suppression d'un élément singulier. Mais je reçois un
java.lang.ClassCastException disant que la méthode ne peut pas être casté à l'adaptateur.
Ceci est la méthode onKeyPressed, ViewCategoryActivity Sí mon activité et SendNetworkRequest est ma méthode:
holder.nameCategory.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
// If the event is a key-down event on the "enter" button
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
System.out.println("Entrou no adapter!!");
Category2 category = new Category2();
category.setName(holder.nameCategory.getText().toString());
((ViewCategoriesActivity)mContext).SendNetworkRequest(categoryList.get(position).getProjectId(), 2, categoryList.get(position).get_id(), new SendCategory(holder.nameCategory.getText().toString()));
//Variable to check if the category inserted is equal to a previous one
int bool = 0;
//The for goes through the list and tries to find a category with the name equal to the one inserted
for (int i = 0; i < categoryList.size(); i++){
//if it finds equal names bool = 1
if (categoryList.get(i).getName().equals(holder.nameCategory.getText().toString())){
bool = 1;
Toast.makeText(mContext, mContext.getResources().getString(R.string.category_different_name),
Toast.LENGTH_LONG).show();
}
}
//There's no category with the same name so it' OK so insert a new one
if (bool == 0){
if(mContext instanceof ViewCategoriesActivity){
((ViewCategoriesActivity)mContext).SendNetworkRequest(categoryList.get(position).getProjectId(), 2, categoryList.get(position).get_id(), new SendCategory(holder.nameCategory.getText().toString()));
}
//categoryList.add(category);
} else {
}
// hide virtual keyboard
InputMethodManager imm =
(InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(holder.nameCategory.getWindowToken(), 0);
return true;
}
return false;
}
});
ne faites pas cela. Utilisez un rappel à la place –
quelle méthode ne peut pas être lancée? – Vyacheslav
poster votre callstack – Vyacheslav