我正在使用Retrofit從RecyclerView
的服務器中加載數據。我已成功實施了Get
和Post
改進方法,但我在Put
和Delete
中遇到了一些問題。由於ReclyclerView
需要一個Adapter
來加載數據,我需要得到我點擊的行的位置,我必須在我的Adapter
內實現onKeyPressed
(因爲我使用和EditText)。從適配器中的活動調用方法
問題是,調用我的Interceptor
,改造呼叫和Everything的方法在我的Activity
中。 所以我決定從我的適配器中的這個活動調用方法來執行單個項目的放置和刪除。但我得到一個
java.lang.ClassCastException說方法不能被鑄造 到適配器。
這是onKeyPressed方法,ViewCategoryActivity對我的活動和SendNetworkRequest是我的方法:
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;
}
});
不這樣做。使用回調代替 –
哪種方法無法投射? – Vyacheslav
發佈您的調用堆棧 – Vyacheslav