0

在 xml 中,我有LinearLayout. 在里面我正在使用一个ExpandableListView. 每个展开项仅包含一个视图,即GridView. 一个GridView 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班级中。请告诉我如何禁用用户单击下载的按钮。

4

2 回答 2

0

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

viewHolder.singleDownloadButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        // Some code goes here...

        new DownloadZipAsyncTask(imageAdapterContext, view).execute(zipFileUrl);

    }
});

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

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

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

于 2012-08-27T10:38:12.187 回答
0

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

于 2012-08-23T06:33:13.053 回答