简单的接口传值

本文介绍了一种用于Android应用中的购物车商品数量增减控件的实现方法。通过自定义视图组件,结合EditText输入框与TextView按钮,实现了商品数量的便捷调整功能。该控件提供加减按钮来修改商品数量,并支持外部监听器回调,以便应用程序能响应数量变化。

//布局文件

//此方法可以实现加减购物车

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/txt_delete"
    android:background="#999fff"
    android:padding="5dp"
    android:text="-"/>

<EditText
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:id="@+id/et_number"
    android:gravity="center"
    android:layout_weight="1"
    android:text="1"
    />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/txt_add"
    android:background="#999fff"
    android:padding="5dp"
    android:text="+"/>
//自定义接口

package com.example.jiekou;

import android.content.Context;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;

/**
 * Created by Zhijun on 2017/11/2.
 */

public class Delected extends LinearLayout {

    private static final String TAG="AddDaleteView";
    private EditText etNumber;


    private OnAddDelClickListener listener;


    interface OnAddDelClickListener{
        void onAddClick(View v);

        void onDelClick(View v);
    }

    public void OnAddDelClickListener(OnAddDelClickListener listener){
        if(listener!=null){
            this.listener=listener;
        }
    }



    public Delected(Context context) {
        this(context,null);
    }

    public Delected(Context context, @Nullable AttributeSet attrs) {
        this(context,attrs,0);
    }

    public Delected(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initView(context,attrs,defStyleAttr);
    }

    public Delected(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
        initView(context,attrs,defStyleAttr);
    }

    private void initView(Context context, AttributeSet attrs, int defStyleAttr) {

        View.inflate(context,R.layout.add_delete,this);
        TextView txtDelete = (TextView) findViewById(R.id.txt_delete);
        TextView txtAdd = (TextView) findViewById(R.id.txt_add);
        etNumber = (EditText) findViewById(R.id.et_number);


        txtDelete.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                listener.onDelClick(view);
            }
        });

        txtAdd.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                listener.onAddClick(view);
            }
        });

    }


    public void setNumber(int number){
        Log.i(TAG,"setNumber"+number);
        if(number>0){
            etNumber.setText(number+"");
        }
    }

    public int getNumber(){
        int number=0;
        try{
            String nummberStr = etNumber.getText().toString().trim();
            number = Integer.valueOf(nummberStr);
        }catch (Exception e){
            number=0;
        }
        return number;
    }

}
//mainActivity

package com.example.jiekou;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.EventLogTags;
import android.util.Log;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    private static final String TAG="MainActivity";
    private  Delected adv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        adv = (Delected) findViewById(R.id.adv_main);


        adv.OnAddDelClickListener(new Delected.OnAddDelClickListener(){

            @Override
            public void onAddClick(View v) {
                Log.i(TAG,"onAddclick:执行");
                int origin = adv.getNumber();
                origin++;
                adv.setNumber(origin);
            }

            @Override
            public void onDelClick(View v) {

                int origin = adv.getNumber();
                origin--;
                adv.setNumber(origin);
            }
        });
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值