Java 选择微调器后填充TextView
从SQL数据库填充文本视图时遇到困难。我有一列填充微调器,然后我希望两个TextView由来自微调器选择的同一行的MySQL列填充。 我找不到要添加到OnSelectedItem部分的正确代码 MainActivity.javaJava 选择微调器后填充TextView,java,android,mysql,textview,spinner,Java,Android,Mysql,Textview,Spinner,从SQL数据库填充文本视图时遇到困难。我有一列填充微调器,然后我希望两个TextView由来自微调器选择的同一行的MySQL列填充。 我找不到要添加到OnSelectedItem部分的正确代码 MainActivity.java public class MainActivity extends AppCompatActivity implements OnItemSelectedListener{ Context c; TextView colorDensity; S
public class MainActivity extends AppCompatActivity implements OnItemSelectedListener{
Context c;
TextView colorDensity;
Spinner colorSpinner= findViewById(R.id.colorSpinner);
ArrayList<String> colors=new ArrayList<>();
final static String urlAddress = "http://www.burtkuntzhandjobs.org/dbcolors.php";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Downloader(MainActivity.this,urlAddress,colorSpinner).execute();
colorDensity = (TextView)findViewById(R.id.colorDensity);
colorSpinner.setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
Toast.makeText(this,"Select Color", Toast.LENGTH_SHORT).show();
}
}
public类MainActivity扩展AppCompativeActivity实现OnItemSelectedListener{
上下文c;
文本视图颜色密度;
微调器colorSpinner=findViewById(R.id.colorSpinner);
ArrayList colors=新的ArrayList();
最终静态字符串URL地址=”http://www.burtkuntzhandjobs.org/dbcolors.php";
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
新的下载程序(MainActivity.this、urlAddress、colorSpinner).execute();
colorDensity=(TextView)findViewById(R.id.colorDensity);
colorSpinner.setOnItemSelectedListener(此);
}
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
}
@凌驾
未选择公共无效(AdapterView父级){
Toast.makeText(这是“选择颜色”,Toast.LENGTH_SHORT).show();
}
}
DataParser.java
public class DataParser extends AsyncTask<Void,Void,Integer> {
Context c;
Spinner colorSpinner;
String jsonData;
ProgressDialog pd;
ArrayList<String> colors=new ArrayList<>();
public DataParser(Context c, Spinner colorSpinner, String jsonData) {
this.c = c;
this.colorSpinner = colorSpinner;
this.jsonData = jsonData;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
pd = new ProgressDialog(c);
pd.setTitle("Parse");
pd.setMessage("Parsing");
pd.show();
}
@Override
protected Integer doInBackground(Void...params) {
return this.parseData();
}
@Override
protected void onPostExecute(Integer result) {
super.onPostExecute(result);
pd.dismiss();
if(result == 0){
Toast.makeText(c,"Unable to Parse",Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(c,"Parse Successful",Toast.LENGTH_SHORT).show();
ArrayAdapter adapter = new ArrayAdapter(c,android.R.layout.simple_list_item_1,colors);
colorSpinner.setAdapter(adapter);
}
}
private int parseData() {
try {
JSONArray ja=new JSONArray(jsonData);
JSONObject jo=null;
colors.clear();
Colors s=null;
for (int i = 0; i < ja.length(); i++) {
jo = ja.getJSONObject(i);
int ui = jo.getInt("ui");
String color=jo.getString("color");
String density = jo.getString("density");
String strainer = jo.getString("strainer");
s = new Colors();
s.setIu(ui);
s.setColor(color);
s.setDensity(density);
s.setStrainer(strainer);
colors.add(color);
}
return 3;
} catch (JSONException e) {
e.printStackTrace();
}
return 0;
}
}
公共类DataParser扩展异步任务{
上下文c;
纺纱机颜色纺纱机;
字符串jsonData;
进展性帕金森病;
ArrayList colors=新的ArrayList();
公共数据解析器(上下文c、微调器colorSpinner、字符串jsonData){
这个.c=c;
this.colorSpinner=colorSpinner;
this.jsonData=jsonData;
}
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
pd=新进度对话框(c);
pd.setTitle(“解析”);
pd.setMessage(“解析”);
pd.show();
}
@凌驾
受保护的整数doInBackground(Void…params){
返回此.parseData();
}
@凌驾
受保护的void onPostExecute(整数结果){
super.onPostExecute(结果);
pd.解散();
如果(结果==0){
Toast.makeText(c,“无法解析”,Toast.LENGTH_SHORT.show();
}否则{
Toast.makeText(c,“解析成功”,Toast.LENGTH_SHORT).show();
ArrayAdapter=新的ArrayAdapter(c,android.R.layout.simple\u list\u item\u 1,颜色);
colorSpinner.setAdapter(适配器);
}
}
私有int-parseData(){
试一试{
JSONArray ja=新JSONArray(jsonData);
JSONObject jo=null;
颜色。清晰();
颜色s=null;
对于(int i=0;i
Downloader.java
public class Downloader extends AsyncTask<Void,Void,String> {
Context c;
String urlAddress;
Spinner colorSpinner;
ProgressDialog pd;
public Downloader(Context c, String urlAddress, Spinner colorSpinner) {
this.c = c;
this.urlAddress = urlAddress;
this.colorSpinner = colorSpinner;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
pd = new ProgressDialog(c);
pd.setTitle("Fetch");
pd.setMessage("Fetching");
pd.show();
}
@Override
protected String doInBackground(Void...params) {
return this.downloadData();
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
pd.dismiss();
if(s == null) {
Toast.makeText(c,"Unable to Retrieve",Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(c,"Success",Toast.LENGTH_SHORT).show();
DataParser parser=new DataParser(c,colorSpinner,s);
parser.execute();
}
}
private String downloadData() {
HttpURLConnection con= (HttpURLConnection) Connector.connect(urlAddress);
if(con == null) {
return null;
}
InputStream is = null;
try {
is = new BufferedInputStream(con.getInputStream());
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String line = null;
StringBuffer response=new StringBuffer();
if(br != null){
while ((line=br.readLine()) !=null) {
response.append(line+"\n");
}
br.close();
} else {
return null;
}
return response.toString();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(is != null){
try{
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
}
公共类下载程序扩展异步任务{
上下文c;
字符串地址;
纺纱机颜色纺纱机;
进展性帕金森病;
公共下载程序(上下文c、字符串URL地址、微调器颜色微调器){
这个.c=c;
this.urlAddress=urlAddress;
this.colorSpinner=colorSpinner;
}
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
pd=新进度对话框(c);
pd.setTitle(“获取”);
pd.setMessage(“获取”);
pd.show();
}
@凌驾
受保护字符串doInBackground(无效…参数){
返回此.downloadData();
}
@凌驾
受保护的void onPostExecute(字符串s){
super.onPostExecute(s);
pd.解散();
如果(s==null){
Toast.makeText(c,“无法检索”,Toast.LENGTH_SHORT.show();
}否则{
Toast.makeText(c,“Success”,Toast.LENGTH_SHORT).show();
DataParser=新的DataParser(c、colorSpinner、s);
parser.execute();
}
}
私有字符串下载数据(){
HttpURLConnection con=(HttpURLConnection)Connector.connect(urlAddress);
如果(con==null){
返回null;
}
InputStream=null;
试一试{
is=新的BufferedInputStream(con.getInputStream());
BufferedReader br=新的BufferedReader(新的InputStreamReader(is));
字符串行=null;
StringBuffer响应=新的StringBuffer();
如果(br!=null){
而((line=br.readLine())!=null){
响应。追加(第+行“\n”);
}
br.close();
}否则{
返回null;
}
返回response.toString();
}捕获(IOE异常){
e、 printStackTrace();
}最后{
如果(is!=null){
试一试{
is.close();
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
返回null;
}
}
进行以下更改并添加所需代码
1.删除微调器colorSpinner=findViewById(R.id.colorSpinner)代码>来自类变量
2.添加微调器colorSpinner=findViewById(R.id.colorSpinner)代码>在onCreate`方法中
看这个尖刺
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_spinner);
Spinner colorSpinner= findViewById(R.id.colorSpinner);
new Downloader(this, urlAddress,colorSpinner).execute();
colorDensity = (TextView)findViewById(R.id.colorDensity);
colorSpinner.setOnItemSelectedListener(this);
}
3.从DataParser
类访问颜色列表
public class DataParser extends AsyncTask<Void,Void,Integer> {
Context c;
Spinner colorSpinner;
String jsonData;
ProgressDialog pd;
ArrayList<String> colors=new ArrayList<>();
private static ArrayList<Colors> colorsList=new ArrayList<>(); // add this line
public DataParser(Context c, Spinner colorSpinner, String jsonData) {
this.c = c;
this.colorSpinner = colorSpinner;
this.jsonData = jsonData;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
pd = new ProgressDialog(c);
pd.setTitle("Parse");
pd.setMessage("Parsing");
pd.show();
}
@Override
protected Integer doInBackground(Void...params) {
return this.parseData();
}
@Override
protected void onPostExecute(Integer result) {
super.onPostExecute(result);
pd.dismiss();
if(result == 0){
Toast.makeText(c,"Unable to Parse",Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(c,"Parse Successful",Toast.LENGTH_SHORT).show();
ArrayAdapter adapter = new ArrayAdapter(c,android.R.layout.simple_list_item_1,colors);
colorSpinner.setAdapter(adapter);
}
}
private int parseData() {
try {
JSONArray ja=new JSONArray(jsonData);
JSONObject jo=null;
colors.clear();
Colors s=null;
for (int i = 0; i < ja.length(); i++) {
jo = ja.getJSONObject(i);
int ui = jo.getInt("ui");
String color=jo.getString("color");
String density = jo.getString("density");
String strainer = jo.getString("strainer");
s = new Colors();
s.setUi(ui);
s.setColor(color);
s.setDensity(density);
s.setStrainer(strainer);
colors.add(color);
colorsList.add(s); // add this line
}
return 3;
} catch (JSONException e) {
e.printStackTrace();
}
return 0;
}
public static List<Colors> getColorsList() { // add this method
return colorsList;
}
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
List<Colors> colorsList = DataParser.getColorsList();
colorDensity.setText(colorsList.get(position).getDensity());
}