0

ArrayAdapter<MyService>各項目にはlistView、非同期呼び出しを実行して http 要求でファイルをダウンロードするボタンが 1 つあります。これはかなりうまく機能しています。

ここで、アクティビティに「すべてダウンロード」ボタンを作成しました。このボタンで のすべてのアイテムを実行したいのlistViewですが、その方法がわかりません。リストを反復処理して、ボタン ビューを取得し、そのクリックを呼び出す必要がありますか?

いくつかの提案をしたいと思います。

4

2 に答える 2

2

クリックを繰り返して偽造するのは良い考えではないと思います。バッキングアダプターであるデータ(あなたの場合は配列です)を取得し、いくつかのロジックを実行して1つずつまたは(はるかに好ましいIMO)バッチでダウンロードする「すべて」ボタンの別の手順を実装します。たとえば、ファイル ID リストをサーバーに送信し、サーバーが ZIP を返すようにします。

于 2013-05-14T11:14:52.327 に答える
0

BaseAdapter の Click イベントを処理するために使用したサンプル コードを確認してください。

package com.nttdata.app;

import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.Typeface;
import android.graphics.drawable.ShapeDrawable;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.Toast;

import com.nttdata.graphics.DrawShape;

public class CategoryAdapter extends BaseAdapter {

    private Context context =null;
    private String[] categoryValues=null;


    public CategoryAdapter(Context context, String[] categoryValues) {
        this.context=context;
        this.categoryValues= categoryValues;
    }

    public int getCount() {
        // TODO Auto-generated method stub
        return categoryValues.length;
    }

    public Object getItem(int arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    public View getView(final int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    View gridView;

    if (convertView == null) {

        gridView = new View(context);

        // get layout from mobile.xml
        gridView = inflater.inflate(R.layout.category, null);

        // set value into textview


         ShapeDrawable sd = DrawShape.GetRoundShape();
         sd.getPaint().setColor(Color.parseColor("#33B2D3"));

        Log.d("DEBUG - CategoryAdapter",String.valueOf(categoryValues[position]));

        Button textView = (Button) gridView.findViewById(R.id.category_item_label);
        textView.setText(categoryValues[position]);
        textView.setTextSize(16);
        textView.setTextColor(Color.parseColor("#FFFFFF"));
        textView.setBackgroundColor(Color.parseColor("#33B2D3"));
        textView.setTypeface(null,Typeface.BOLD);
        textView.setBackgroundDrawable(sd);

        textView.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

                try{    

                        Intent productsIntent = new Intent(context, ProductActivity.class);
                        Bundle param = new Bundle();
                        param.putInt("Categories", 1); //Your id
                        param.putCharSequence("CategoryName", categoryValues[position]);
                        productsIntent.putExtras(param);
                        MainTabActivity.productSpec.setContent(productsIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
                        MainTabActivity.tabHost.setCurrentTab(1);


                }catch (Exception e) {
                    Toast.makeText(context, "Error in Setting Values to Product Activity ", Toast.LENGTH_LONG).show();
                    Log.d("DEBUG_Dapter Exaception", e.getMessage().toString());
                }

               // Toast.makeText(context, categoryValues[position], Toast.LENGTH_LONG).show();

            }



            });

        // set image based on selected text


    } else {
        gridView = (View) convertView;
    }

    return gridView;

    }

}

アクティビティでの使用

GridView categoryView = new GridView(CategoryActivity.this);
         categoryView.setNumColumns(2);
         categoryView.setGravity(Gravity.CENTER);
         categoryView.setColumnWidth(100);
         categoryView.setStretchMode(GridView.STRETCH_COLUMN_WIDTH);
         categoryView.setBackgroundResource(R.drawable.bg);

         LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
                 LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT);

        layoutParams.setMargins(12, 20, 6, 20);
        categoryView.setLayoutParams(layoutParams);



        categoryView.setAdapter(new CategoryAdapter(this, category_List));

        categoryView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v,int position, long id) {
                Toast.makeText(
                           CategoryActivity.this,
                           ((Button) v.findViewById(R.id.category_item_label))
                           .getText(), Toast.LENGTH_SHORT).show();

            }
        });
于 2013-05-14T11:18:21.853 に答える