2013-01-23 2 views
0

привет У меня проблема с onItemClick в моем приложении для Android. Я пытаюсь, но я получаю сообщение об ошибке. Я хочу, чтобы я получал данные из базы данных sqlite в своем списке и мог щелкнуть по значению в этом списке, чтобы запустить другой actitiy с этим значением. см мой код для получения дополнительной информации:Как я могу использовать onItemClick в моем приложении для Android?

мой actitiy:

public class ShowActivity extends ListActivity { 

мой метод:

private void ladeDaten() { 
     Cursor KlassenCursor = mDatenbank.rawQuery(KLASSEN_SELECT_ROW, null); 
     startManagingCursor(KlassenCursor); 

     android.widget.SimpleCursorAdapter KlassenAdapter = new android.widget.SimpleCursorAdapter(this, 
       android.R.layout.simple_list_item_1, 
       KlassenCursor, 
       new String[] {"name"}, 
       new int[] { 
       android.R.id.text1 
       }); 

     setListAdapter(KlassenAdapter); 

     ListView lv = (ListView)findViewById(android.R.id.list); 

     lv.setOnItemClickListener(new OnItemClickListener() { 

      public void onItemClick(AdapterView<?> parent,View view,int position,long id){ 

       Cursor cursor = (Cursor)parent.getItemAtPosition(position); 

       String item = cursor.getString(cursor.getColumnIndex("name")); 

       Intent intent = new Intent(this,ShowActivity.class); //here is the error 

       intent.putExtra("iteid", item); 

       startActivity(intent); 
      } 
     }); 

    } 

мой макет: ...

</ListView> 

...

моя ошибка:

The constructor Intent(new AdapterView.OnItemClickListener(){}, Class<ShowActivity>) is undefined 

Что я могу сделать? :(

UPDATE:

public void onItemClick(AdapterView<?> parent,View view,int position,long id){ 

       Cursor cursor = (Cursor)parent.getItemAtPosition(position); 

       String item = cursor.getString(cursor.getColumnIndex("name")); 

       Intent intent = new Intent(ShowDayActitiy,ShowDayActivity.class); //here is the error 

       intent.putExtra("iteid", item); 

       startActivity(intent); 
      } 
     }); 

я хочу начать делать Ther actitiy :(

+0

Почему, пожалуйста, сообщите нам, что вы получили сообщение об ошибке, а затем не сообщите нам, что такое ошибка? Считаете ли вы, что ошибки случайны или не важны? – Simon

+0

заменить 'new Intent (this, ShowActivity.class);' by 'new Intent (ShowActitiy.this, ShowDayActivity.class);' – njzk2

+0

@ njzk2: Это может быть ответ. Уже есть семь ответов, но вы избили все они, потому что Op пытается открыть ** ShowDayActivity **, но пока никто не упоминал об этом. –

ответ

1

Изменить этот

Intent intent = new Intent(this,ShowActivity.class); 

в

Intent intent = new Intent(ShowActivity.this,ShowActivity.class); 
1

использование

Intent intent = new Intent(ShowActivity.this,ShowActivity.class); 

или

Intent intent = new Intent(view.getContext(),ShowActivity.class); 

вместо

Intent intent = new Intent(this,ShowActivity.class); 

для запуска активности вам нужно будет пройти контекст активности вместо зрения

1

есть проблема в вашем намерении код

Intent intent = new Intent(getapplicationContext(),ShowActivity.class); 
intent.putExtra("iteid", item); 
startActivity(intent); 
+0

см. Мое обновление ..... – Tarasov

1

Проверьте импорт для OnItemClickListener() в вашем коде. Вы использовали adapter.onitemClickListener.

Удалить импорт и импорт ListView.onItemClickListener.

Вы можете использовать

onItemClick (AdapterView adapterView, Вид зрения, ИНТ позиции, длинные значения) {}

1

набор Intent intent = new Intent(ShowActivity.this,ShowActivity.class); при использовании "это" в nItemClickListener вы не добирались контекст деятельности.

2

Это происходит потому, что, когда вы создаете намерение, первым параметром является контекст.Вы создаете намерение от onClick(), таким образом, контекст внутри него не относится к внешнему виду. Цель должна иметь контекст настоящей деятельности в качестве первого параметра

Таким образом, использование ShowActivity.this или getApplicationContext() вместо того, чтобы использовать эту

Intent intent = new Intent(getApplicationContext(), SecondActivity.class) 

или

Intent intent = new Intent(FirstActivity.this, SecondActivity.class) 

будет делать трюк.

Пожалуйста, не стесняйтесь задавать любые дальнейшие сомнения

1

AdapterView родитель

Использование parent.getitematpostion (ПОлОжЕНИЕ) .ToString(). Это поможет вам.

+0

нет, потому что это курсор, а cursor.toString() не означает многого. и «это поможет вам» не означает – njzk2

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

  • Нет связанных вопросов^_^