Откройте диалог в элементе ListView, нажмите

1

Я хочу открыть Dialog каждый раз, когда я нажимаю на элемент ListView.

Этот код не работает, и я действительно не могу найти ошибку. Пожалуйста, помогите!

 private void loadFeed(){
            try{
                BaseFeedParser parser = new BaseFeedParser();
                messages = parser.parse();
                List<String> descriptions = new ArrayList<String>();
                List<String> titles = new ArrayList<String>(messages.size());
                for (Message msg : messages){
                     descriptions.add(msg.getDescription());
                    titles.add(msg.getTitle() + "\n" +msg.getDate());
                }
                ArrayAdapter<String> adapter = 
                    new ArrayAdapter<String>(this, R.layout.row,titles);
                this.setListAdapter(adapter);
            } catch (Throwable t){
                Log.e("AndroidNews",t.getMessage(),t);
            }
        }


        @Override
        protected void onListItemClick(ListView descriptions, 
                    View v, int position, long id) {
            super.onListItemClick(descriptions, v, position, id);
            String description = descriptions.get(position);
            Dialog dialog = new Dialog(this);
                dialog.setContentView(R.layout.single);
                dialog.setTitle("Blog");
                dialog.setCancelable(true);
                TextView text = (TextView) dialog.findViewById(R.id.TextView1);
                text.setText(description);
                dialog.show();

        }

с помощью этого кода приложение запущено, в диалоговом окне отображается описание, но описание также отображается в элементе списка.

messages = parser.parse();
List<String> titles = new ArrayList<String>(messages.size());
for (Message msg : messages){
    titles.add(msg.getTitle() + "\n" +msg.getDate() + "\n\n" + msg.getDescription());
 }
ArrayAdapter<String> adapter = 
                new ArrayAdapter<String>(this, R.layout.row,titles);
this.setListAdapter(adapter);

protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        String selection = l.getItemAtPosition(position).toString();
        Dialog dialog = new Dialog(this);
            dialog.setContentView(R.layout.row2)
            dialog.setCancelable(true);
            TextView text = (TextView) dialog.findViewById(R.id.SinglePost);
            text.setText(selection);
            dialog.show();

    }
  • 0
    @kotas: Неправильно, означает, с какой проблемой вы сталкиваетесь, можете ли вы сказать мне, есть ли у вас какие-либо проблемы в Logcat или нет
  • 0
    eclipse не позволяет программе работать .. она выделяет красной линией строку get in String description = describ.get (position); и говорит, чтобы добавить приведение к описаниям (я попробовал это, но это сбивает мое приложение)
Теги:
listview
dialog

2 ответа

2

Это не сработает, потому что метод get(int i) не существует для типа ListView или для ArrayAdapter.

EDIT:

Вы, кажется, смешиваете класс ListView и List. Это две совершенно разные вещи!

Класс, реализующий интерфейс List, такой как ArrayList в вашем случае, содержит объекты, а класс ListView - это и Android-виджет, который отображает View в представлении списка.

Я действительно рекомендую вам работать через раздел Hello Views, чтобы вы получили базовое представление о представлениях Android перед погружением в более сложные вещи.

  • 0
    Есть ли способ исправить это, пожалуйста?
  • 0
    если я изменяю в onListItemClick (ListView l, ...), а затем super.onListItemClick (l, ...), он выделяет описания и предлагает мне создать локальную переменную ..
Показать ещё 3 комментария
0

Я делаю что-то подобное... и это очень помогает мне. Я не мой, поэтому, пожалуйста, дайте кредит, которого он заслуживает.

http://stackoverflow.com/questions/6467140/how-to-open-dialog-from-listview

Ещё вопросы

Сообщество Overcoder
Наверх
Меню