Android在自定义列表视图中获取微调器选定项

时间:2011-11-04 10:39:23

标签: android custom-lists android-spinner

我正在使用BaseAdapter for ListView。自定义列表视图中的每一行都包含一个微调器和一个按钮。当我单击列表行中的按钮时,我必须从我在单击按钮的同一列表行中的微调器中获取selectedItem()。

private class MyCustomAdapter extends BaseAdapter {
private Activity activity;
private String[] estimated, price, image;
private  LayoutInflater inflater=null;
public ViewHolder holder;
public ProductImageLoader imageLoader;
private ArrayList<String> arraylist4;
SQLiteDatabase db;
View vi;

public MyCustomAdapter(SubMenu subMenu, String[] estimated, String[] price, String[] image) {
    // TODO Auto-generated constructor stub
    this.activity = subMenu;
    this.estimated = estimated;
    this.price = price;
    this.image = image;
    inflater = (LayoutInflater)getParent().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    imageLoader=new ProductImageLoader(activity.getParent());

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

@Override
public Object getItem(int position) {
    // TODO Auto-generated method stub
    return position;
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return position;
}
public  class ViewHolder{
    public TextView text;
    public TextView text1;
    public ImageView image_view;
    public Button button, add_btn;
    public Spinner spinner;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    vi=convertView;

    if(convertView==null){

        vi = inflater.inflate(R.layout.submenu_items, null);
        holder=new ViewHolder();
        holder.text=(TextView)vi.findViewById(R.id.food_name);
        holder.text1=(TextView)vi.findViewById(R.id.prize);
        holder.image_view=(ImageView)vi.findViewById(R.id.imageview);
        holder.button=(Button)vi.findViewById(R.id.detail_btn);
        holder.add_btn=(Button)vi.findViewById(R.id.addorder_btn);
        holder.spinner=(Spinner)vi.findViewById(R.id.spinner);
        vi.setTag(holder);
    }
    else
        holder=(ViewHolder)vi.getTag();

    holder.text.setText(estimated[position]);
    holder.text1.setText(price[position]);
    holder.image_view.setTag(image[position]);
    imageLoader.DisplayImage(image[position], activity, holder.image_view);
    holder.button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    Bundle bundle = new Bundle();
    bundle.putString("url", image[position]);
    bundle.putString("description", description[position]);
    Log.d("url",""+description[position]);

    Intent intent = new Intent(SubMenu.this,FoodDetailPage.class);
    intent.putExtras(bundle);
    TabGroupActivity parentActivity = (TabGroupActivity)getParent();
    parentActivity.startChildActivity("FoodDetailPage", intent);
    }

    });
    holder.add_btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Log.d("row spinner", ""+holder.spinner.getChildAt(position));
            try {
                db = SQLiteDatabase.openDatabase("data/data/com.android.restaurant1/Restaurant", null, SQLiteDatabase.CREATE_IF_NECESSARY);
                db.beginTransaction();
                db.execSQL("insert into table1(MenuName, Count, Price) values('"+estimated[position]+"', '"+holder.spinner.getSelectedItem()+"', '"+price[position]+"')");
                db.setTransactionSuccessful();
                db.endTransaction();
                db.close();
            }
            catch(SQLException e) {

            }
        }
    });
    return vi;
}

}

0 个答案:

没有答案