2010-08-16 3 views
1

У меня есть представление, которое имеет onClickListener, когда пользователь нажимает на определенную позицию, я хотел бы запросить базу данных и затем извлечь данные из нее. Проблема в том, что я не могу сделать это в классе вида, потому что это не Activity.Выполнение запросов SQLite с точки зрения

Я попытался реализовать OnTouchListener над макетом в Управлении, но, похоже, макет представления отменяет любую попытку получить регистрацию касания оттуда.

Итак, я пробовал несколько подходов, и они потерпели неудачу. Мне интересно, есть ли у кого-нибудь из вас какие-то идеи? Как реализовать его так, чтобы при касании пользователем экрана я могу получить значения X Y, а затем запросить базу данных?

ответ

1

Использовать метод getContext(). Затем вы можете получить экземпляр базы данных из контекста. Несколько как это:

class TestView extends View{ 

    public TestView(Context context) { 
     super(context); 
     SQLiteDatabase db = getContext().openOrCreateDatabase(...); 
    } 

} 
+0

Я получаю 'твиты не может быть разрешен или не field' для следующего ..' SQLiteDatabase дб = getContext() tweets.getWritableDatabase(); 'почему.? Я объявляю его как переменную класса. – Skizit

+0

Это потому, что getContext() возвращает вам ссылку на контекст, а не ссылку на ваш тип, где вы объявили это поле. Вы можете попробовать вернуть возвращаемую ссылку на ваш тип, т. Е. SQLiteDatabase db = ((YourType) getContext()). Tweets.getWritableDatabase(); –

+0

Извините, но что вы подразумеваете под «своим типом»? – Skizit

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