2016-09-02 2 views
0

адаптера:вызова метода из класса адаптера к деятельности

check_list_item.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     JPrequirements.prepareSelection(v, getAdapterPosition()); 
    } 
}); 

JPrequirements является деятельностью. и prepareSelection - это нестатический метод внутри операции. Я не могу получить к нему доступ из адаптера.

ОШИБКА:

non static method cannot be referenced from a static context

Который является правильным. поэтому я постарался:

Но проблема в том, что здесь я потерял весь компонент активности. например. компоненты компоновки и другие поддерживающие переменные. Я не хочу этого. Каков наилучший способ справиться с этим? Как я могу получить обновленное значение от адаптера до активности? Таким образом, я могу отображать его в режиме реального времени.

Спасибо.

+0

Вы можете использовать интерфейс. –

ответ

2

Вы можете достичь этого через interface. Во-первых, определить interface класс как:

public interface ActivityAdapterInterface { 
    public void prepareSelection(View v, int position); 
} 

Теперь можно реализовать interface в вашем Activity как:

public class JPrequirements extends AppCompatActivity implements ActivityAdapterInterface { 
    ... 
    public void prepareSelection(View v, int position) { 
     // cool stuff here 
    } 
    ... 
} 

Убедитесь, что вы передаете this ссылку на интерфейс к вашему Adapter через конструктор. Тогда, наконец, называть его по щелчку как:

check_list_item.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     mActivityAdapterInterface.prepareSelection(v, getAdapterPosition()); 
    } 
}); 

[EDIT]

Для обеспечения interface к вашему Adapter обеспечить его конструктор.

public class YourAdapter ... { 

    private ActivityAdapterInterface mActivityAdapterInterface; 

    public YourAdapter(..., ActivityAdapterInterface activityAdapterInterface) { 
     activityAdapterInterface = mActivityAdapterInterface; 
    } 

} 
+0

точно так же :-) –

+0

как я могу получить «mActivityAdapterInterface» в адаптере? –

+0

@RonakPatel проверить мой адаптер выше – Shaishav

Смежные вопросы