Android 将微调器放置在自定义列表视图中

发布于 2024-12-13 15:30:28 字数 4052 浏览 1 评论 0原文

我正在为 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟─花易冷 2024-12-20 15:30:28

创建自定义适配器。在 getView() 内部设置 Button 上的 ClickListener 并在此侦听器内部读取 spinner 的选定值。

Create custom Adapter . inside getView() set ClickListener on Button and inside this listener read selected value of spinner .

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文