こんにちは私は、サーバーに接続して投稿のリストを取得するアンドロイドで単純なアプリを作った、そしてspinner
は各投稿のタイトルで満たされ、それらの中の一つ。Spinnerは選択された項目を表示しません
私は投稿を選択する必要がある時点まですべて動作します。spinner
を開きます。選択したすべてのタイトルが表示され、何も起こらず、投稿はspinner
で選択されず、テキストは変更されません、私はスピナーの項目を示していないが、私はそれを動作させることができなかった約10件の記事のように読んで、私を助けてください、これは私のJavaコードです:
package com.example.lagarto.blog;
import android.graphics.Color;
import android.os.AsyncTask;
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.TextView;
import org.w3c.dom.Text;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import android.util.Log;
import android.widget.Spinner;
public class MainActivity extends AppCompatActivity {
ArrayList<Post> archivo=new ArrayList<Post>();
ArrayList<String> titulos=new ArrayList<String>();
public ArrayAdapter<String> spinnerArrayAdapter;
private static final String TAG= MainActivity.class.getSimpleName();
private class GetDBConnection extends AsyncTask<Integer, Void, String>{
@Override
protected String doInBackground(Integer... params) {
try{
Connection conn= DBConnection.getInstance().getConnection();
Statement st= conn.createStatement();
String sql=("SELECT * FROM posts");
ResultSet rs=st.executeQuery(sql);
while(rs.next()) {
int id = rs.getInt("Id");
String title = rs.getString("Title");
String body = rs.getString("Body");
String date = rs.getString("Date");
Post post = new Post(id, title, body, date);
archivo.add(post);
System.out.println(archivo);
}
Log.d(TAG,"Terminado");
}catch(SQLException e){
e.printStackTrace();
}
return "Valido";
}
@Override
protected void onPostExecute(String result) {
Spinner spinner=(Spinner) findViewById(R.id.spinner);
spinner.setVisibility(View.VISIBLE);
for (Post i:archivo) {
titulos.add(i.getTitle());
}
TextView title=(TextView) findViewById(R.id.title);
TextView body=(TextView) findViewById(R.id.body);
title.setVisibility(View.VISIBLE);
body.setVisibility(View.VISIBLE);
TextView connection=(TextView) findViewById(R.id.connection);
connection.setVisibility(View.INVISIBLE);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
spinnerArrayAdapter.notifyDataSetChanged();
Post resultado=archivo.get(position);
title.setText(resultado.getTitle());
body.setText(resultado.getBody());
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
spinnerArrayAdapter.notifyDataSetChanged();
Post resultado=archivo.get(0);
title.setText(resultado.getTitle());
body.setText(resultado.getBody());
}
});
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new GetDBConnection().execute(0);
Spinner spinner=(Spinner) findViewById(R.id.spinner);
spinnerArrayAdapter=new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, titulos);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(spinnerArrayAdapter);
spinner.setSelection(1);
System.out.println(archivo);
}
}
そして、これは私のXMLコードです:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.lagarto.blog.MainActivity">
<TextView
android:layout_width="400dp"
android:layout_height="50dp"
android:text="Hello World!"
android:textSize="30dp"
android:textAlignment="center"
android:layout_alignParentEnd="true"
android:id="@+id/title"
android:layout_marginTop="40dp"
android:visibility="invisible"
/>
<TextView
android:layout_width="400dp"
android:layout_height="500dp"
android:text="Hello World!"
android:textSize="16dp"
android:layout_marginTop="100dp"
android:layout_alignParentEnd="true"
android:id="@+id/body"
android:visibility="invisible"
/>
<Spinner
android:layout_width="400dp"
android:layout_height="50dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:id="@+id/spinner"
android:textSize="20dp"
android:visibility="invisible"
android:backgroundTint="@color/colorPrimaryDark"
android:textAlignment="center"
/>
<TextView
android:text="Waiting for connection please wait"
android:layout_width="400dp"
android:layout_height="100dp"
android:textSize="30dp"
android:textAlignment="center"
android:layout_marginTop="150dp"
android:id="@+id/connection" />
</RelativeLayout>
'spinner.setOnItemSelectedListener'を' onCreate'に置いたほうが良いでしょう。 データを取得するためのバックグラウンド処理に専念する必要があります。 – cipley
それはバグを修正しません:/ –
奇数... 'onPostExecute'が完了した後にlogcatを取得していますか? – cipley