如何使用声明的数组

时间:2017-01-04 18:24:59

标签: java android

我不能这样做它显示这个错误:

Screenshot

我想声明一个数组,然后在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);
    }
}

3 个答案:

答案 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)]