0

xmlで、私は持っていLinearLayoutます。その中で私はを使用していExpandableListViewます。すべての展開アイテムには、であるビューが1つだけ含まれていGridViewます。、、およびの3GridView cellつのUIコンポーネントで構成します。これらの3つのUIコンポーネントを制御する方法は、次のとおりです。ImageViewTextViewButton

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

on clickメソッドでボタンのクリック可能なプロパティをfalseに設定し、実行後に有効にします-(ビューv)次に、vのプロパティを設定します

于 2012-08-23T06:33:13.053 に答える
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。クリックイベントでは、ボタンビューのみを渡すためです。したがって、私は再びそのようなプログレスバーを更新する方法に問題があります。繰り返しますが、問題ではありません。UIコンポーネントProgressDialogのみが問題を引き起こします。ProgressBar

于 2012-08-27T10:38:12.187 に答える