【问题标题】:Accessing a UI component (Button) inside several other UI components (ExpandableListView - GridView) in Android在 Android 中访问其他几个 UI 组件(ExpandableListView - GridView)中的 UI 组件(按钮)
【发布时间】:2012-08-23 06:28:29
【问题描述】:

在 xml 中,我有 LinearLayout。 在里面我使用的是ExpandableListView。 每个展开项仅包含一个视图,即 GridViewGridView cell 由三个 UI 组件组成,它们是 ImageViewTextViewButton。 我如何控制这三个 UI 组件如下,

public View getView(final int position, View convertView, ViewGroup parent) {

    LayoutInflater layoutInflater = (LayoutInflater) imageAdapterContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    if (convertView == null) {
        convertView = layoutInflater.inflate(R.layout.single_grid_item, null);
        viewHolder = new ViewHolder();
        viewHolder.singleImageView = (ImageView) convertView.findViewById(R.id.singleGridItem_imageView);
        viewHolder.singleTextView = (TextView) convertView.findViewById(R.id.singleGridItem_textView);
        viewHolder.singleDownloadButton = (Button) convertView.findViewById(R.id.singleGridItem_download_button);
    }
}

// ViewHolder is a static nested inner class

一切正常。这意味着每个单元格都标识为不同的单元格。 它们有不同的图像,适当的TextView 标签和Button 点击事件也可以正常工作。 对于单击按钮,我使用了带有ProgressDialog 的下载。那也工作正常。 我想要的是在下载过程中禁用Button。 下载发生在单独的 AsyncTask 类中。 请告诉我如何禁用用户点击下载的按钮。

【问题讨论】:

    标签: android button gridview expandablelistview layout-inflater


    【解决方案1】:

    在 on click 方法中将按钮的可点击属性设置为 false 并在执行后启用它 -- (view v) 然后设置 v 的属性

    【讨论】:

    • 我试过了。但它不起作用。无论如何,感谢您的努力
    • 也尝试过 setVisibility(View.INVISIBLE)。不工作。
    • View getView(int position, View convertView, ViewGroup parent){ View vi=convertView; ViewHolder 支架;持有人=(ViewHolder)vi.getTag(); holder.button.setvisibility(view.gone)}
    【解决方案2】:

    大多数时候我必须为自己的问题写下答案。 这个也一样。 我已经想办法了。 我已经覆盖了getView() 方法中的按钮单击事件,如下所示。

    viewHolder.singleDownloadButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
    
            // Some code goes here...
    
            new DownloadZipAsyncTask(imageAdapterContext, view).execute(zipFileUrl);
    
        }
    });
    

    当我点击下载按钮时,我正在将按钮 view 传递给 DownloadZipAsyncTask 类。 在该类中,我再次创建 Button 实例并将视图设置为不可见,如下所示onProgressUpdate()

    Button mybutton = (Button) view.findViewById(R.id.singleGridItem_download_button);
    mybutton.setVisibility(View.INVISIBLE);
    

    对于按钮,它正在工作。但我不能像那样更改ImageViewTextView。 因为在 click 事件中,我们只传递了 Button 视图而已。 因此,我再次遇到了如何更新这样的进度条的问题。 同样,ProgressDialog 不是问题,只有ProgressBar UI 组件有问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-13
      • 1970-01-01
      • 2015-06-10
      • 1970-01-01
      相关资源
      最近更新 更多