2012-08-04 3 views
0

3 가지 활동 : Form Activity, DataBase Helper 및 Main Activity가 있습니다. 기본 활동에는 데이터베이스에 저장되는 "compNameAdd"의 목록보기가 표시되어야합니다. 내가는, setAdapterDatabase의 arrayAdapter를 사용한 ListView

DataBase dbc = new DataBase(NituachActivity.this); 
    dbc.open(); 

    String[] cs = new String[] { DataBase.RAW_COMPNAMEADD }; 

    Log.d(TAG, cs.toString()); 

    blv.setAdapter(new ArrayAdapter<String>(this, 
    android.R.layout.simple_list_item_1, cs)); 

    dbc.close(); 

을 통해 목록보기를 채우기 위해 노력하고 있어요 때 나는 컬럼의 열이 아닌 값의 이름을 얻는다. 문제가 무엇입니까?

데이터베이스 도우미 :

package com.nituach.nituach; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteException; 
import android.database.sqlite.SQLiteOpenHelper; 

public class DataBase { 

public static final String RAW_ID = "_id"; 
public static final String RAW_COMPNAMEADD = "compNameAdd"; 
public static final String RAW_CASH = "etCash"; 
public static final String RAW_CUSTOMERS = "castumers"; 
public static final String RAW_STOCK = "stock"; 
public static final String RAW_FIXED_ASSETS = "fixedAssets"; 
public static final String RAW_ACCUMULTED_DEPRECIATION = "accumultedDepreciation"; 
public static final String RAW_BONDS = "bonds"; 
public static final String RAW_LOANS = "loans"; 
public static final String RAW_EQUITY = "equity"; 

public static final String RAW_COMPNAME_ID = "_id"; 
public static final String RAW_COMPNAME = "compName"; 

private static final String DATABASE_NAME = "ProsseDatBase"; 
static final String DATABASE_TABLE = "data"; 
static final String DATABASE_TABLE_SETTINGS = "compNameConnector"; 

private static final int DATABASE_VERSION = 1; 

private ProsseDatBase thdb; 
private static Context tcontext; 
private SQLiteDatabase tdb; 

private static class ProsseDatBase extends SQLiteOpenHelper { 

    public ProsseDatBase(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     String pdb = "CREATE TABLE " + DATABASE_TABLE + " (" + RAW_ID 
       + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
RAW_COMPNAMEADD 
       + " TEXT, " + RAW_CASH + " TEXT, " + RAW_CUSTOMERS 
       + " TEXT, " + RAW_STOCK + " TEXT, " + RAW_FIXED_ASSETS 
       + " TEXT, " + RAW_ACCUMULTED_DEPRECIATION + " TEXT, " 
       + RAW_BONDS + " TEXT, " + RAW_LOANS + " TEXT, " + 
RAW_EQUITY 
       + " TEXT);"; 
     db.execSQL(pdb); 

     String cndb = "CREATE TABLE " + DATABASE_TABLE_SETTINGS + " (" 
       + RAW_COMPNAME_ID + " INTEGER PRIMARY KEY 
AUTOINCREMENT, " 
       + RAW_COMPNAME + " TEXT);"; 
     db.execSQL(cndb); 

    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE); 
     db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE_SETTINGS); 
     onCreate(db); 
    } 
} 

public DataBase(Context c) { 
    tcontext = c; 
} 

public DataBase open() throws SQLiteException { 
    thdb = new ProsseDatBase(tcontext); 
    tdb = thdb.getWritableDatabase(); 
    return this; 
} 

public SQLiteDatabase getDatabase() { 
    return tdb; 
} 

public void close() { 
    tdb.close(); 
} 

public long createEntry(String cm, String ch, String sk, String ot, 
     String fs, String an, String bs, String ls, String ey) { 
    ContentValues cv = new ContentValues(); 
    cv.put(RAW_COMPNAMEADD, cm); 
    cv.put(RAW_CASH, ch); 
    cv.put(RAW_CUSTOMERS, ot); 
    cv.put(RAW_STOCK, sk); 
    cv.put(RAW_FIXED_ASSETS, fs); 
    cv.put(RAW_ACCUMULTED_DEPRECIATION, an); 
    cv.put(RAW_BONDS, bs); 
    cv.put(RAW_LOANS, ls); 
    cv.put(RAW_EQUITY, ey); 

    return tdb.insert(DATABASE_TABLE, null, cv); 
} 

public String getData() { 
    String[] columns = new String[] { RAW_COMPNAMEADD }; 
    Cursor c = tdb.query(DATABASE_TABLE, columns, null, null, null, null, 
      null); 
    String results = ""; 

    int iCM = c.getColumnIndex(RAW_COMPNAMEADD); 

    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) { 
     results = results + c.getString(iCM) + "\n"; 
    } 
    return results; 
} 
} 

메인 활동 :

패키지 com.nituach.nituach;

import android.app.Activity; 
import android.content.Intent; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 
import android.widget.TextView; 

public class NituachActivity extends Activity implements OnClickListener { 

Button addNewBuisness; 
ListView blv; 
TextView tay; 
String tyy; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    final String TAG = NituachActivity.class.getSimpleName(); 
    addNewBuisness = (Button) findViewById(R.id.btnAddNewBuisness); 
    addNewBuisness.setOnClickListener(NituachActivity.this); 
    blv = (ListView) findViewById(R.id.listView1); 
    tay = (TextView) findViewById(R.id.TempArray); 

    Log.d(TAG, "All Variables was created"); 
    DataBase dbc = new DataBase(NituachActivity.this); 
    dbc.open(); 

    String[] cs = new String[] { DataBase.RAW_COMPNAMEADD }; 

    Log.d(TAG, cs.toString()); 

    blv.setAdapter(new ArrayAdapter<String>(this, 
    android.R.layout.simple_list_item_1, cs)); 

    dbc.close(); 


} 

public void onClick(View v) { 
    Intent addnbIntent = new Intent(NituachActivity.this, 
      AddNewBuisness.class); 
    NituachActivity.this.startActivity(addnbIntent); 

} 
} 

답변

3

주 활동에서 값을 가져 오기 위해 실제로 getData()를 호출하지 않았습니다. 먼저

대신 문자열의 배열을 반환하는 방법 서명있는 GetData() 변경 :

public List<String> getData() { 
    String[] columns = new String[] { RAW_COMPNAMEADD }; 
    Cursor c = tdb.query(DATABASE_TABLE, columns, null, null, null, null, 
     null); 
    String results = ""; 
    List<String> results = new ArrayList<String>(); 
    int iCM = c.getColumnIndex(RAW_COMPNAMEADD); 

    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) { 
     results.add(c.getString(iCM); 
    } 
    return results; 
} 

를 그런 다음 mainactivity,이로 변경 :

DataBase dbc = new DataBase(NituachActivity.this); 
dbc.open(); 

List<String> cs = dbc.getData(); 
blv.setAdapter(new ArrayAdapter<String>(this, 
android.R.layout.simple_list_item_1, cs)); 
+0

대단히 감사합니다! – Dori

+0

안녕하세요 당신은'results'라는 두 개의 변수를 가지고 있습니다. 하나는'List '이고 다른 하나는'String'입니다. –

관련 문제