Android使用Spinner实现下拉选功能(获取远程数据并根据下拉刷新) (学习笔记 (二))

本文介绍如何在Android应用中使用Spinner实现动态下拉选择功能,包括从远程数据库获取数据并更新下拉列表。首先,创建DBOpenHelper类用于数据库连接,接着修改Spinner_Bean类作为实体类,最后在MainActivity中实现数据加载和下拉刷新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android使用Spinner实现下拉选功能(获取远程数据并根据下拉刷新)(学习笔记 (二))

实现效果

在这里插入图片描述

实现第一步,添加DBOpenHelper.java

package com.example.studyproject;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBOpenHelper {
    private static String driver = "com.mysql.jdbc.Driver"; //MySql驱动
    private static String url = "jdbc:mysql://14.xxx.xxx.xx:3306/user?characterEncoding=utf-8"; //MySql数据库连接url
    private static String user = "xxx"; //用户名
    private static String paswword = "xxxx"; //密码
    /*连接数据库*/
    public static Connection getConn(){
    Connection conn = null;
        try {
            Class.forName(driver);
            conn = (Connection) DriverManager.getConnection(url,user,paswword); //获取连接
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return  conn;

    }
}

第二步,修改Spinner_Bean.java

添加对应显示的实体类

package com.example.studyproject;

public class Spinner_Bean {
    private String title ;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }
}

第三步,修改MainActivity.java

package com.example.studyproject;

import android.content.Context;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import butterknife.BindViews;
import butterknife.ButterKnife;

public class MainActivity extends AppCompatActivity {
  @BindViews({R.id.spinner_test_one,R.id.spinner_test_two})
    List<Spinner> spinnerList;
    String item_name;
    Context mContext;
    String dataChina ="头条" ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mContext = MainActivity.this;
      ButterKnife.bind(this);
      initView();
  }

    private void initView() {
        final List<String> item = new ArrayList<>();
        item.add("头条"); //0
        item.add("社会");
        item.add("国际");//2
        item.add("国内");
        item.add("体育");
        item.add("娱乐");
        spinnerList.get(0).setSelection(0);
        ArrayAdapter<String> adapter = new ArrayAdapter<>(mContext,R.layout.simple_spinner_item,item);
       adapter.setDropDownViewResource(android.R.layout.select_dialog_singlechoice);  //选中的样式
        spinnerList.get(0).setAdapter(adapter);
        //这里别选成了ItemClickListener
        spinnerList.get(0).setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int arg, long l) {

                  //这里我们新建方法实现选择了第一个下拉选项后,第二个内容跟着变化
                  SwitchItemSelection(arg);
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });
    }

    private void SwitchItemSelection(int arg) {
           if (arg == 0){
                dataChina = "头条";
            } else if (arg ==3){
                dataChina ="国内";
            }else if (arg ==1){
                dataChina ="社会";
            }else if (arg == 2){
                dataChina = "国际";
            }else if (arg == 4){
                dataChina = "体育";
            }
        final List<String> item_part = new ArrayList<>();
        new Thread(new Runnable() {
            @Override
            public void run() {
                Spinner_Bean spinner_bean = new Spinner_Bean();
                Connection conn = null;
                conn = (Connection) DBOpenHelper.getConn();
                String sql = "select title from news_info where category='"+dataChina+"'limit 5";
                PreparedStatement pst;
                try {
                    pst = (PreparedStatement) conn.prepareStatement(sql);
                    ResultSet rs = pst.executeQuery();
                    while (rs.next()){
                        spinner_bean.setTitle(rs.getString(1));
                        item_part.add(rs.getString(1));
                    }
                    pst.close();
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }

            }
        }).start();
        ArrayAdapter<String> adapter_sp = new ArrayAdapter<>(mContext,R.layout.simple_spinner_item,item_part);
        adapter_sp.setDropDownViewResource(android.R.layout.select_dialog_singlechoice);
        spinnerList.get(1).setAdapter(adapter_sp);
        spinnerList.get(1).setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int arg3, long l) {

            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });
    }

}

好啦,本篇到此就结束啦,有问题欢迎批评指正,觉得不错请点个赞,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雪の星空朝酱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值