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) {
}
});
}
}
好啦,本篇到此就结束啦,有问题欢迎批评指正,觉得不错请点个赞,谢谢。