2016-05-01 12 views
-1

私はこれをできるだけシンプルに保つようにしています。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への参照を提供するアダプタを作成:

+0

あなたはデータベースに接続し、余分な作業を避けるために設計されたCursorAdapterを使用できます – Pooya

答えて

0

これを試してみてください。

関連する問題