Java 在Android中,从ArrayList转换为String[]后,会在微调器中填充数组空值
我正在动态填充mysql数据库中的值,并将数据添加到Arraylist中。现在,如果我想在spinner中填充数据,必须将其转换为使用 AidStr是一个arraylist变量,其中包含来自数据库的值Java 在Android中,从ArrayList转换为String[]后,会在微调器中填充数组空值,java,android,arraylist,android-arrayadapter,android-spinner,Java,Android,Arraylist,Android Arrayadapter,Android Spinner,我正在动态填充mysql数据库中的值,并将数据添加到Arraylist中。现在,如果我想在spinner中填充数据,必须将其转换为使用 AidStr是一个arraylist变量,其中包含来自数据库的值 Object[] ObjectList = AidStr.toArray(); String[] StringArray = Arrays.copyOf(ObjectList,ObjectList.length,String[].class); 及 但它不工作,我检查了字符串数组的大小,它
Object[] ObjectList = AidStr.toArray();
String[] StringArray = Arrays.copyOf(ObjectList,ObjectList.length,String[].class);
及
但它不工作,我检查了字符串数组的大小,它在logcat中显示为null,如下所示
System.out.println("Lengtth of an array after convertion:"+stringArr.length);
System.out.println("Lengtth of an array after convertion AIDSTR:"+AidStr.size());
转换后数组的长度:0
转换后数组的长度AIDSTR:0
当我检查arraylist值时,我在logcat中得到了正确的输出,当我转换为字符串[]时,它的堆栈为空,长度等于0
System.out.println("AID STRING ALL THE VALUES:"+AidStr);
打印arraylist变量后的Logcat输出
AID STRING ALL THE VALUES: [Apple, Ball, Bat]
请帮助将值转换为字符串[],并将正确的数据动态填充到微调器中
MainActivity.java
public class MainActivity extends Activity {
final ArrayList<String> AidStr=new ArrayList<String>();
String php_send = null;
String name="fruits";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mer_payment);
System.out.println("AID STRING ALL THE VALUES ITEMS:"+items);
new AsyncTaskOperation().execute(php_send);
/*First method returning null values it is not working */
Object[] ObjectList = AidStr.toArray();
String[] StringArray = Arrays.copyOf(ObjectList,ObjectList.length,String[].class);
/*One more method it is not working */
String[] stringArr = AidStr.toArray(new String[AidStr.size()]);
Spinner dropdown = (Spinner)findViewById(R.id.spinner_tag);
dropdown.setOnItemSelectedListener(this);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, StringArray);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
dropdown.setAdapter(adapter);
Button buy_m = (Button)findViewById(R.id.buy_merchan);
buy_m.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent buy_merchan = new Intent(this,PayActivity.class);
buy_merchan.putExtra("title", name);
startActivity(buy_merchan);
}
});
}
public class AsyncTaskOperation extends AsyncTask <String, Void, Void>
{
@Override
protected Void doInBackground(String... paramsObj) {
php_send = "http://localhos/Android/App/mer.php";
String str = "";
HttpResponse response;
HttpClient myClient = new DefaultHttpClient();
HttpPost myConnection = new HttpPost(php_send);
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("name", name));
myConnection.setEntity(new UrlEncodedFormEntity(nameValuePairs));
response = myClient.execute(myConnection);
str = EntityUtils.toString(response.getEntity(), "UTF-8");
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
String map;
try
{
JSONArray data = new JSONArray(str);
for (int i = 0; i < data.length(); i++) {
JSONObject c = data.getJSONObject(i);
map = c.getString("variation");
AidStr.add(map); //add the values to the arraylist
}
}catch (JSONException e) {
e.printStackTrace();
}
System.out.println("AID STRING ALL THE VALUES:"+AidStr);
return null;
}}}
XML:
这是实现微调器的xml文件您正在执行在后台运行的异步任务。 把这个代码放在一边 @覆盖 PostExecute上受保护的void
Object[] ObjectList = AidStr.toArray();
String[] StringArray = Arrays.copyOf(ObjectList,ObjectList.length,String[].class);
/*One more method it is not working */
String[] stringArr = AidStr.toArray(new String[AidStr.size()]);
Spinner dropdown = (Spinner)findViewById(R.id.spinner_tag);
dropdown.setOnItemSelectedListener(this);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, StringArray);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
dropdown.setAdapter(adapter);
Object[]ObjectList=AidStr.toArray();
String[]StringArray=Arrays.copyOf(ObjectList,ObjectList.length,String[].class);
/*还有一种方法不起作用*/
String[]stringArr=AidStr.toArray(新字符串[AidStr.size()]);
微调器下拉列表=(微调器)findViewById(R.id.Spinner\u标记);
setOnItemSelectedListener(此);
ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u微调器\u项,StringArray);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
下拉列表.setAdapter(适配器);
转换时,AidStr为空。。。AsyncTask.execute()没有阻止调用,它不会等到doInBackground完成…@Selvin你能告诉我在这段代码中我需要更改什么吗我的朋友
String[] items = { "Apple", "Ball", "Bat"}; instead now it is populating as shown above arraylist values
<Spinner
android:id="@+id/spinner_tag"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
style="@style/spinner_style"
android:popupBackground="#D3D5D3"
android:prompt="@string/select" />
Object[] ObjectList = AidStr.toArray();
String[] StringArray = Arrays.copyOf(ObjectList,ObjectList.length,String[].class);
/*One more method it is not working */
String[] stringArr = AidStr.toArray(new String[AidStr.size()]);
Spinner dropdown = (Spinner)findViewById(R.id.spinner_tag);
dropdown.setOnItemSelectedListener(this);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, StringArray);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
dropdown.setAdapter(adapter);