2012-05-03 8 views
0

私の目標は、リストを水平にスワイプすることです。パブリッククラスで埋められます.ClientsManagerOpenHandlerはSQLiteOpenHelperを継承します。 私はviewpagerとListFragmentsを使ってこの目標に到達しようとしています。他の解決策がある場合は教えてください。 リストビューを横にスワイプされたsqliteデータで埋め込む方法

今問題:私は、次のPageListFragment.javaから呼び出そうとする場合は、ClientsManagerOpenHandlerからのデータは、プログラムがクラッシュした時に :

dbCursorTerminAnsicht = openHandler.queryTabelle("terminansicht"); 

たぶん私はListFragment内の拡張SQLiteOpenHelperを呼び出すことはできませんか?しかし、どのように私のリストにsqliteからデータを取得し、私は水平にデータを変更するためにスワイプします...

助けてください。私は何かを試しましたが、今は本当に助けが必要です。

public class PageListFragment extends ListFragment implements OnClickListener, 
    LoaderCallbacks<Cursor> { 

private Calendar cal = Calendar.getInstance(); 
private ClientsManagerOpenHandler openHandler; 
public static final String PREFS_NAME ="MyPrefsFile"; 
SharedPreferences prefs;` 

private Cursor dbCursorTerminAnsicht; 
private Integer intVerdienst = 0; 
private String queryVerdienst; 
private SimpleCursorAdapter mCursorAdapter; 
private ListView listViewTermine; 
private final int listNr; 
private final String[] fruit = { "Bananen", "Apfle", "Erdbeere", 
     "Kirschen", "Mangos" }; 
private Uri[] mMediaSource = {null, MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI, MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI}; 

public PageListFragment(int nr) { 
    this.listNr = nr; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 


//!!!!! after the next line the program crashes. Even I have set breakpoints at ClientsManagerOpenHandler 
//I cannot see anything in the debugger (Debugger: Source not found...) 


    dbCursorTerminAnsicht = openHandler.queryTabelle("terminansicht"); 

    if (listNr == 0) { 
     ArrayAdapter<String> openHandler = new ArrayAdapter<String>(
       getActivity(), android.R.layout.simple_list_item_1, fruit); 
     setListAdapter(openHandler); 
    } else if (listNr == 1) { 
     mCursorAdapter = new SimpleCursorAdapter(getActivity(), 
       android.R.layout.simple_list_item_1, null, 
       new String[] { MediaStore.Audio.Artists.ARTIST }, 
       new int[] { android.R.id.text1 }, 0); 
     setListAdapter(mCursorAdapter); 
     getLoaderManager().initLoader(0, null, this); 
    } else if (listNr == 2) { 

     openHandler = new ClientsManagerOpenHandler(getActivity()); 
     String query = "projekte, klienten, termine WHERE termine.KLIENTID = klienten._id AND termine.PROJEKTID = projekte._id ORDER BY BEGINN ASC;"; 



     MyDataAdapter myClientsadapter = new MyDataAdapter (
       getActivity(), 
        R.layout.terminzeile, 
       // android.R.layout.two_line_list_item, 
        dbCursorTerminAnsicht, 
       new String[] { openHandler.BEGINN , openHandler.ENDE, openHandler.NACHNAME, openHandler.VORNAME, openHandler.PROJEKT, openHandler.BEZAHLT}, 
       // fields, 
       // new int[] {R.id.editTextNachname, R.id.editTextVorname } 
        new int[] {R.id.textViewBeginn, R.id.textViewEnde, R.id.textViewNachname, R.id.textViewVorname, R.id.textViewProjekt,R.id.checkBoxBezahlt } 
       ); 


     myClientsadapter.setViewBinder(new MyDataAdapter.ViewBinder() { 
      public boolean setViewValue(View view, Cursor cursor, int columnIndex) { 


       if(columnIndex == 13) { 
         String strBeginn = cursor.getString(columnIndex); 
         CheckBox cb = (CheckBox) view; 
         int intbezahlt = cursor.getInt(13); 
         int index = cursor.getColumnIndex("SATZ"); 
         Integer intSatz = cursor.getInt(index); 
         if (index>0) { 
          if (intbezahlt>0){ 
           intVerdienst = intVerdienst + intSatz; 
          } 
         } 
         cb.setChecked(intbezahlt > 0); 
         return true; 
       } 

       String str = cursor.getString(columnIndex); 
       return false; 
      } 
     }); 

     //TerminlisteRefresh(""); 

     setListAdapter(myClientsadapter); 
     getLoaderManager().initLoader(0, null, this); 
    } 
} 


public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) { 
    Loader<Cursor> loader = new CursorLoader(getActivity(), mMediaSource[listNr], 
      null, null, null, null); 
    return loader; 
} 


public void onLoadFinished(Loader<Cursor> arg0, Cursor cursor) { 
    mCursorAdapter.swapCursor(cursor); 

} 


public void onLoaderReset(Loader<Cursor> arg0) { 
    mCursorAdapter.swapCursor(null); 

} 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 

} 





} 
+0

あなたのlogcatからのエラーを投稿してください。 – Sam

答えて

0

あなたがそれを定義している前にopenHandlerにアクセスしようとしていることが表示されます:

dbCursorTerminAnsicht = openHandler.queryTabelle("terminansicht"); 
... 
openHandler = new ClientsManagerOpenHandler(getActivity()); 

これは良い仕事かもしれません:

openHandler = new ClientsManagerOpenHandler(getActivity()); 
dbCursorTerminAnsicht = openHandler.queryTabelle("terminansicht"); 
+0

ありがとう、これは私の問題を解決しました。 – roland

+0

問題ありません。この回答を確認して質問を終了してください。 – Sam

関連する問題