来自单击列表视图中的控件的对话框

Posted

技术标签:

【中文标题】来自单击列表视图中的控件的对话框【英文标题】:Dialog from click on control in list view 【发布时间】:2018-08-24 02:01:29 【问题描述】:

在 Listview 视图中的控件上显示对话框(如日期选择器)的最佳做法是什么?

是否可以创建嵌入对话框逻辑的自定义控件并将其放入 Listview 视图中?

编辑:

例如: 我有放置在 Listview 中的 textEdit。我想在用户单击 textEdit 时显示日期选择器。我想知道放置对话逻辑的最佳位置是什么。

【问题讨论】:

看不懂你的问题,请解释清楚 我更新了问题。请让我知道我的问题中不清楚的地方。 当用户点击edittext时可以显示对话框 是的,但编辑文本被放置在列表视图中。那么我应该将逻辑放入放置列表视图的活动/片段中吗? 你在listview适配器里面试过了吗? 【参考方案1】:

您可以在适配器逻辑中为ListView 使用setOnItemClickListener

然后您需要创建OnItemClickListener 的实例并覆盖OnClick() 方法并在那里执行您的点击逻辑。下面是一个非常简单的例子来演示这个概念。

public class MySimpleListAdapter implements ListAdapter 

    // Set your constructors and so on

    . . . 

    @Override
    public View getView(int position, View convertView, ViewGroup parent) 
        final ViewHolder viewHolder;

        if (convertView == null) 
            convertView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.simple_row_layout, parent, false);
            viewHolder = new ViewHolder();
            viewHolder.textView = (TextView) convertView.findViewById(R.id.simple_text_view);
            convertView.setTag(viewHolder);
         else 
            viewHolder = (ViewHolder) convertView.getTag();
        

        if (adapterData != null) 
            viewHolder.textView.setText(item.getTaskTitle()); // This is logic from my SQ Lite database
            viewHolder.textView.setOnClickListener(new View.OnClickListener() 
                @Override
                public void onClick(View v) 
                    // Implement your logic for launching a DialogFragment here
                
            );
        
        return convertView;
    

最后,在您显示ListViewActivity 中,只需将MySimpleListAdapter 设置为您的ListView 即可。

我上面的代码使用TextView 小部件而不是EditText,但它应该足够简单,可以用EditText 小部件替换它。

【讨论】:

以上是关于来自单击列表视图中的控件的对话框的主要内容,如果未能解决你的问题,请参考以下文章

单击列表视图项

如何从列表视图按钮单击将多个数据添加到数组列表?

为啥单击 SwiftUI 中的列表项后列表视图项变为灰色?

检测在列表视图内单击并显示上下文菜单

单击列表视图时如何显示警报对话框

单击列表视图时如何显示警报对话框