我不能这样做它显示这个错误:
我想声明一个数组,然后在while循环中使用它来为它分配一个字符串变量。我该怎么做?
package com.example.zaina.assignmentdb;
import android.database.Cursor;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class Show extends AppCompatActivity {
DB d=new DB(this);
Cursor h;
int j=0;
String t;
String []g;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show);
d.open();
h=d.selectInfo();
h.moveToFirst();
while (h.moveToNext()){
t=h.getString(j);
g[]={t};
// Toast.makeText(Show.this, t, Toast.LENGTH_SHORT).show();
}
ListAdapter listAdapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,g);
ListView listView= (ListView) findViewById(R.id.listView);
listView.setAdapter(listAdapter);
}
}
答案 0 :(得分:1)
我会使用ArrayList<String> g = new ArrayList<>();
然后您可以使用g.add("Your String")
它也可以让你像每个循环一样使用
for(String string : g) {Do something}
答案 1 :(得分:0)
您可以使用ArrayList
并执行以下操作:
public class Show extends AppCompatActivity {
DB d=new DB(this);
Cursor h;
int j=0;
String t;
ArrayList<String> g = new ArrayList<String>();
String[] g1 = new String[1];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show);
d.open();
h=d.selectInfo();
h.moveToFirst();
while (h.moveToNext()){
t=h.getString(j);
g.add(t);
// Toast.makeText(Show.this, t, Toast.LENGTH_SHORT).show();
}
g1 = (String [])g.toArray(g1);
ListAdapter listAdapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, g1);
ListView listView= (ListView) findViewById(R.id.listView);
listView.setAdapter(listAdapter);
}
}
答案 2 :(得分:0)
您忘记初始化变量 g :
String[] g=new String[(Maximum index)]