Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 选择微调器后填充TextView_Java_Android_Mysql_Textview_Spinner - Fatal编程技术网

Java 选择微调器后填充TextView

Java 选择微调器后填充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

从SQL数据库填充文本视图时遇到困难。我有一列填充微调器,然后我希望两个TextView由来自微调器选择的同一行的MySQL列填充。 我找不到要添加到OnSelectedItem部分的正确代码

MainActivity.java

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());
}