私はこれをできるだけシンプルに保つようにしています。Androidが別のアクティビティからMainActivityのメソッド値を取得しています
public ArrayList<String> getAllPlacesNames() {
SQLiteDatabase db = this.getWritableDatabase();
Cursor result = db.rawQuery("select placeName FROM " + DataTableName,null);
ArrayList<String> companyNames = new ArrayList<String>();
while(result.moveToNext()) {
String places = result.getString(result.getColumnIndex("placeName"));
companyNames.add(places);
}
return companyNames;
}
私は私が取得し、DataBaseHelperからメソッドgetAllPlacesNames()
を呼び出すことにより、名の文字列配列を返し、その内部MainActivity.javaを持っている:私は、テーブル内のすべての名前を返す次のメソッドをcontaint SQLiteデータベースを持っています:
public ArrayList<String> getAllPlacesNamesMain() {
return summerJobDB.getAllPlacesNames();
}
今問題です。私は名前を表示するためにリストビューinorderのカスタムアダプタを作成しようとしています。しかし私はgetAllPlacesNamesMain()
の戻り値を私のアダプタファイルStringArrayAdapter.javaから取得し、それを配列に変換する方法を知らないので、私のコンストラクタ内でそれを使うことができます。これまで私が持っているものは次のとおりです。
public class StringArrayAdapter extends BaseAdapter {
Context ctxt;
LayoutInflater myInflator;
DataBaseHelper summerJobDB;
public ArrayList<String> getAllPlacesNamesMain() {return summerJobDB.getAllPlacesNames();}
String[] places = new String [getAllPlacesNamesMain().size()];
// convert places to Array
places = getAllPlacesNamesMain().toArray(places);
public StringArrayAdapter(String [] arr, Context c) {
// here I need to set places to arr
}
@Override
public int getCount() {
return 0;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// create a cell to be displayed inside listview (a view)
return null;
}
}
助けてください!
public class StringArrayAdapter extends BaseAdapter {
Context ctxt;
LayoutInflater myInflator;
DataBaseHelper mSummerJobDB;
private ArrayList<String> mAllPlacesNames;
public StringArrayAdapter(DataBaseHelper summerJobDB, Context c) {
// here I need to set places to arr
this.ctxt = c;
this.mSummerJobDB = summerJobDB;
mAllPlacesNames = summerJobDB.getAllPlacesNames();
}
@Override
public int getCount() {
return mAllPlacesNames.size();
}
@Override
public Object getItem(int position) {
return mAllPlacesNames.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// create a cell to be displayed inside listview (a view)
return null;
}
}
をし、あなたのMainActivityに、あなたはDatabaseHelperへの参照を提供するアダプタを作成:
あなたはデータベースに接続し、余分な作業を避けるために設計されたCursorAdapterを使用できます – Pooya