ArrayAdapter<MyService>
各項目にはlistView
、非同期呼び出しを実行して http 要求でファイルをダウンロードするボタンが 1 つあります。これはかなりうまく機能しています。
ここで、アクティビティに「すべてダウンロード」ボタンを作成しました。このボタンで のすべてのアイテムを実行したいのlistView
ですが、その方法がわかりません。リストを反復処理して、ボタン ビューを取得し、そのクリックを呼び出す必要がありますか?
いくつかの提案をしたいと思います。
ArrayAdapter<MyService>
各項目にはlistView
、非同期呼び出しを実行して http 要求でファイルをダウンロードするボタンが 1 つあります。これはかなりうまく機能しています。
ここで、アクティビティに「すべてダウンロード」ボタンを作成しました。このボタンで のすべてのアイテムを実行したいのlistView
ですが、その方法がわかりません。リストを反復処理して、ボタン ビューを取得し、そのクリックを呼び出す必要がありますか?
いくつかの提案をしたいと思います。
クリックを繰り返して偽造するのは良い考えではないと思います。バッキングアダプターであるデータ(あなたの場合は配列です)を取得し、いくつかのロジックを実行して1つずつまたは(はるかに好ましいIMO)バッチでダウンロードする「すべて」ボタンの別の手順を実装します。たとえば、ファイル ID リストをサーバーに送信し、サーバーが ZIP を返すようにします。
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();
}
});