Spinner和ListView

Spinner

SpinnerMode属性: “dialog”、“dropdown”【Adroid3.0(API 11)以上支持】

entries属性:设置要放在列表中的文字内容,值为字符串数组。(必须设置)

例:entries=@array/seasons

xml:@array/数组名

java :R.array.数组名

values/string.xml中创建:

<string-array name="seasons">
    <item>春</item>
    <item>夏</item>
    <item>秋</item>
    <item>冬</item>
</string-array>
int getSelectedItemPosition() :读取Spinner组件的选取项(从0开始)

getResources类定义的getStringArray()方法:获取指定资源ID的字符串数组

getString() :指定资源ID的字符串

getDrawable():获取放置在drawable-Xxx文件夹下的图像资源

例:String [] cinames = getResources().getStringArray(R.array.cinemas);


实现接口需定义接口中所有方法

android.widget.AdapterView.OnItemSelectedListener

setOnItemSelectedListener() 实现接口

OnItemSelectedListener

OnItemSelected():Spinner组件的选择事件

OnNothingSelected():用户“拉下菜单但没有选取选项”。

OnItemSelected(Spinner组件,某一个TextView对象,int position,long id)

:position与id值相同


ListView

ListView与Spinner类似。

同:将列出的选项先创建成字符串数组资源,再赋值给entries,执行时自动列出数组内容。

异:1)Spinner等用户按下,才会展开选项内容,ListView在画面上直接列出。

2)选取事件监听器所使用的接口不同。

OnItemClick():ListView的单击事件

setOnItemClickListener

OnItemClickListener接口,实现的方法只有一个





为了方便起见,我将使用JavaFX框架来实现这个界面。以下是一个简单的示例代码: ```java import javafx.application.Application; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.*; import javafx.stage.Stage; public class UIExample extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { // 创建一个垂直布局 VBox root = new VBox(); root.setAlignment(Pos.CENTER); root.setSpacing(10); // 创建一个TextView Label textView = new Label("TextView"); textView.setStyle("-fx-font-size: 16pt;"); // 创建一个EditText TextField editText = new TextField(); editText.setPrefWidth(300); // 创建一个Button Button button = new Button("Button"); button.setPrefWidth(100); button.setOnAction(event -> { System.out.println("Button clicked!"); }); // 创建一个ImageButton Image image = new Image("https://via.placeholder.com/50"); ImageView imageView = new ImageView(image); Button imageButton = new Button("", imageView); imageButton.setPrefWidth(50); imageButton.setOnAction(event -> { System.out.println("ImageButton clicked!"); }); // 创建一个CheckBox CheckBox checkBox = new CheckBox("CheckBox"); checkBox.setOnAction(event -> { System.out.println("CheckBox state changed: " + checkBox.isSelected()); }); // 创建一个RadioButton RadioButton radioButton1 = new RadioButton("RadioButton1"); RadioButton radioButton2 = new RadioButton("RadioButton2"); ToggleGroup radioGroup = new ToggleGroup(); radioButton1.setToggleGroup(radioGroup); radioButton2.setToggleGroup(radioGroup); radioGroup.selectedToggleProperty().addListener((observable, oldValue, newValue) -> { RadioButton selectedRadio = (RadioButton) newValue; System.out.println("RadioButton selected: " + selectedRadio.getText()); }); // 创建一个Spinner Spinner<Integer> spinner = new Spinner<>(0, 10, 5); spinner.valueProperty().addListener((observable, oldValue, newValue) -> { System.out.println("Spinner value changed: " + newValue); }); // 创建一个ListView ListView<String> listView = new ListView<>(); listView.getItems().addAll("Item 1", "Item 2", "Item 3"); listView.setOnMouseClicked(event -> { String selectedItem = listView.getSelectionModel().getSelectedItem(); System.out.println("ListView item selected: " + selectedItem); }); // 将所有控件添加到布局中 root.getChildren().addAll(textView, editText, button, imageButton, checkBox, radioButton1, radioButton2, spinner, listView); root.setPadding(new Insets(10)); // 创建一个场景并显示 Scene scene = new Scene(root, 400, 400); primaryStage.setScene(scene); primaryStage.setTitle("UI Example"); primaryStage.show(); } } ``` 在这个示例代码中,我们创建了一个垂直布局,并向其中添加了TextView、EditText、Button、ImageButton、CheckBox、RadioButton、SpinnerListView控件。我们还为Button、ImageButton、RadioButton、SpinnerListView添加了鼠标监听事件,当用户点击它们时,它们会触发相应的事件处理程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值