0

私の目標は、リストを水平方向にスワイプすることです。リストは、パブリッククラスClientsManagerOpenHandlerによって埋められ、SQLiteOpenHelperを拡張します。私はviewpagerとListFragmentsを使用して、この目標を達成しようとしています。他の解決策がある場合は教えてください。

ここで問題が発生します。次の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

}





}
4

1 に答える 1

0

openHandler定義する前にアクセスしようとしているようです。

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

これはうまくいくかもしれません:

openHandler = new ClientsManagerOpenHandler(getActivity());
dbCursorTerminAnsicht = openHandler.queryTabelle("terminansicht");
于 2012-05-03T18:51:44.223 に答える