Android简化一个界面内的多个Listener

当我们要实现一个点击事件的时候,通常在OnCreate中这样写:

MyView.setOnClickListener(new OnClickListener() {
	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
	}
});

现在可以通过构造一个内部类(当然写在外部也是可以的,因为使用范围仅限于这个活动类之内,所以就写成内部类了),实现监听器方法:

private class MyClickListener implements OnClickListener {
	@Override
	public void onClick(View v) {
		switch(v.getId()){
		case R.id.MyView1:
			// TODO Auto-generated method stub
			break;
		case R.id.MyView2:
			// TODO Auto-generated method stub
			break;
                case......
                }
	}
}

然后在OnCreate方法中绑定监听器:

MyView1.setOnClickListener(new MyClickListener());
MyView2.setOnClickListener(new MyClickListener());
......

 
 

这样就可以将点击事件都集中到一起,方便修改与阅读。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这里提供一个简单的购物车界面示例,其中包含25个商品。请注意,这只是一个基本的示例,实际应用中可能需要更复杂的功能和设计。 布局文件: ``` <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/title" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="16dp" android:text="My Shopping Cart" android:textSize="24sp" android:textStyle="bold" /> <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> <Button android:id="@+id/checkout_button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Checkout" /> </LinearLayout> ``` Java文件: ``` public class MainActivity extends AppCompatActivity { private ListView listView; private Button checkoutButton; private ArrayList<Item> itemsList; private ItemAdapter itemAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Initialize views listView = findViewById(R.id.list_view); checkoutButton = findViewById(R.id.checkout_button); // Initialize items list itemsList = new ArrayList<>(); itemsList.add(new Item("Item 1", 10.0)); itemsList.add(new Item("Item 2", 20.0)); itemsList.add(new Item("Item 3", 30.0)); // Add more items here... // Initialize item adapter itemAdapter = new ItemAdapter(this, itemsList); // Set adapter for list view listView.setAdapter(itemAdapter); // Set click listener for checkout button checkoutButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { double total = 0.0; for (Item item : itemsList) { if (item.isChecked()) { total += item.getPrice(); } } Toast.makeText(MainActivity.this, "Total: $" + total, Toast.LENGTH_SHORT).show(); } }); } // Item class private static class Item { private String name; private double price; private boolean isChecked; public Item(String name, double price) { this.name = name; this.price = price; this.isChecked = false; } public String getName() { return name; } public double getPrice() { return price; } public boolean isChecked() { return isChecked; } public void setChecked(boolean checked) { isChecked = checked; } } // Item adapter private static class ItemAdapter extends ArrayAdapter<Item> { private Context context; private ArrayList<Item> itemsList; public ItemAdapter(Context context, ArrayList<Item> itemsList) { super(context, 0, itemsList); this.context = context; this.itemsList = itemsList; } @NonNull @Override public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { View view = convertView; if (view == null) { view = LayoutInflater.from(context).inflate(R.layout.item_layout, parent, false); } final Item item = itemsList.get(position); // Set item name TextView itemName = view.findViewById(R.id.item_name); itemName.setText(item.getName()); // Set item price TextView itemPrice = view.findViewById(R.id.item_price); itemPrice.setText("$" + item.getPrice()); // Set checkbox state CheckBox itemCheckbox = view.findViewById(R.id.item_checkbox); itemCheckbox.setChecked(item.isChecked()); // Set click listener for checkbox itemCheckbox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { item.setChecked(((CheckBox) view).isChecked()); } }); return view; } } } ``` 其中,Item类表示购物车中的一个商品,包括名称、价格和是否被选中;ItemAdapter类用于将Item对象显示在ListView中;MainActivity类负责初始化界面和处理按钮点击事件。具体实现请参考代码注释。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值