Как я могу передать данные обратно на адаптер с помощью интерфейса - PullRequest
0 голосов
/ 25 октября 2019

Я пытался проверить похожие сообщения, прежде чем спрашивать, но я не совсем понял.

Я реализовал пользовательский интерфейс, как показано ниже:

public interface OnChangeColor {
  void onColorChanged();
}

, пытаясь установитьцвет из действия, так что один из элементов представления рециркулятора меняет цвет:

class A extends AppCompatActivity {

 void passData(){
   OnChangeColor onChangeColor = this;
   onChangeColor.onColorChanged();
 }

и реализация внутри адаптера, для которой не вызывается :

class MyAdapter … implements OnColorChanged{
   onColorChanged(){
      //Do something  
   }

как я могу передать данные обратно в адаптер с помощью интерфейса?

Ответы [ 2 ]

1 голос
/ 25 октября 2019

Интерфейс - это контракт, который должен соблюдать любой класс , реализующий интерфейс. И как вы получаете доступ к функциональности какого-то класса? Просто взяв его instance. Ваш MainActivity не реализует OnChangeColor Interface, поэтому вы не можете использовать this .Ваш adapter реализует interface, поэтому вам нужно использовать

   OnChangeColor onChangeColor = adapter;  // your adapter instance
0 голосов
/ 25 октября 2019

Вы должны установить реализацию интерфейса в действии A.

class A extends AppCompatActivity {
private MyAdapter adapter = MyAdapter()
 ....
void passData(){
   OnChangeColor onChangeColor = adapter;
   onChangeColor.onColorChanged();
 }
}

В этом случае вы будете вызывать onColorChanged () для экземпляра вашего интерфейса в MyAdapter

Но да. .. Почему бы просто не создать метод в классе адаптера и вызвать его из действия. Вам не нужен интерфейс для этого.

...