在ListView项目上打开一个对话框单击

时间:2011-01-29 17:19:13

标签: android listview dialog

我想在每次点击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();

    }

2 个答案:

答案 0 :(得分:2)

这不起作用,因为类型get(int i)ListView的方法ArrayAdapter不存在。

修改

您似乎混淆了ListView类和List接口。这是两件完全不同的事情!

在您的案例中实现List接口的类(如ArrayList)包含对象,而ListView类和Android小部件在列表表示中显示View

我真的建议您完成Hello Views教程部分,以便在深入了解更复杂的内容之前对Android视图有基本的了解。

答案 1 :(得分:0)

我正在做类似的事......这对我有很大帮助。我不是我的,所以请给予应有的信誉。

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