Тот же слушатель для списка и кнопки - PullRequest
0 голосов
/ 22 ноября 2010

В моем приложении нажатие на строку списка или кнопку означает выполнение тех же команд. Моя проблема в том, что список и кнопка имеют разных слушателей (AdapterView.OnItemClickListener против View.OnClickListener) Как я могу добавить код для 2 представлений (в качестве слушателя) без дублирования кода.

С наилучшими пожеланиями

Ответы [ 3 ]

1 голос
/ 23 ноября 2010

Вот мое решение:

public class SelectRecipeListener implements AdapterView.OnItemClickListener, 
                                    View.OnClickListener{
private Context currentContext;
private boolean storeAsLastViewed;

public SelectRecipeListener(Context context, boolean store) {
    currentContext = context;
    storeAsLastViewed = store;
}

public void onItemClick(AdapterView<?> parent, View view, int position,
        long id) {
    execute((String) view.getTag());
}

public void onClick(View v) {
    execute((String) v.getTag());
}

private void execute(String id) {
    Intent intent = new Intent(currentContext, RecipeTabHost.class);
    intent.putExtra(currentContext.getResources().getString(
            R.string.recipe_id_transition_key), id);
    intent.putExtra(currentContext.getResources().getString(
            R.string.last_recipe_id_storing_key), storeAsLastViewed);
    currentContext.startActivity(intent);
}

}

1 голос
/ 22 ноября 2010

Как добавить код для двух представлений (в качестве прослушивателя) без дублирования кода.

Реализуйте рабочую логику в методе и просто вызовите этот метод из ваших слушателей.

0 голосов
/ 22 ноября 2010

Лучший способ - написать класс-оболочку для Button и List, и иметь общего слушателя .... и использовать их в своем проекте. но если вы не готовы принять эту боль, самый простой способ, как сказал Октавиан, поместить логику в метод и вызывать ее из обоих мест:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...