2011-11-04 37 views
0

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

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

http://app-solut.com/2011/03/using-custom-layouts-for-spinner-or-listview-entries-in-android/ 请尝试此链接的微控制器在listview。 – Noman

+0

在该链接中,微调器和列表视图在一个布局中使用。但我需要的是在自定义列表项中使用微调框。 –

回答

0

创建自定义适配器。里面的getView()在Button上设置ClickListener,并在此侦听器中读取微调器的选定值。

+0

我使用我的代码编辑了我的帖子...请通过它并告诉我在哪里创建自定义适配器 –