Android 将微调器放置在自定义列表视图中
我正在为 ListView 使用 BaseAdapter。自定义列表视图中的每一行都包含一个微调器和一个按钮。当我单击列表行中的按钮时,我必须从单击按钮的同一列表行中的微调器获取 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;
}
}
I am using BaseAdapter for ListView. The each row in the custom list view consists a spinner and a button. When i click the button in a list row, i have to get the selectedItem() from the spinner in the same list row in which i had clicked the button.
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;
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
创建自定义适配器。在 getView() 内部设置 Button 上的 ClickListener 并在此侦听器内部读取 spinner 的选定值。
Create custom Adapter . inside getView() set ClickListener on Button and inside this listener read selected value of spinner .