2012-11-16 5 views
0

CursorLoader를 사용하여 채워지는 ListFragment가 있습니다. ListFragment가 채워지면 사용자가 선택한 List Fragment의 항목을 식별 할 OnItemClickListener 메서드가 있습니다. 어떻게해야합니까? 나는 시도했다 :ListFragment에서 정보를 얻는 방법

String item = getListAdapter().getItem(position); 
String item = getListAdapter().getItem(position).toString(); 

및 위치가 너무처럼 onClickItemListener 방법에 전달 정수

String item = (String) ((Fragment) getListAdapter().getItem(position)).getString(0); 

을 :

public void onListItemClick(ListView l, View v, int position, long id) 

한 종류의 이러한 던져 캐스트 예외의 전체 또는 다른. 나는 혼란 스럽다. 이것은 간단한 일처럼 보입니다. 목록 조각이 채워지는 방법은 다음과 같습니다.

private SimpleCursorAdapter mAdapter; 
private static final String[] PROJECTION = new String[] { "_id", "stitchname" }; 
@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    Intent myData = getActivity().getIntent(); 
    Bundle info = myData.getExtras(); 
    String[] dataColumns = { "stitchname" }; 
    int[] viewIDs = { R.id.stitchlist1 }; 
    mAdapter = new SimpleCursorAdapter(getActivity(), R.layout.stitchlist, null, dataColumns, viewIDs, 0); 
    setListAdapter(mAdapter); 
    getLoaderManager().initLoader(0, info, (LoaderCallbacks<Cursor>) this); 
} 
@Override 
public Loader<Cursor> onCreateLoader(int id, Bundle args) { 
    String selection = "stitchlevel=?"; 
    String[] selectionArgs = new String[] {args.getString("Level")}; 
    return (Loader<Cursor>) new CursorLoader(getActivity(), STITCHES_URI,    PROJECTION, selection, selectionArgs, null); 
} 

모든 의견을 환영합니다. 감사합니다.

+1

아마이 링크가 도움이 될 것입니다. - http://stackoverflow.com/questions/5376860/how-to-get-string-from-selected-item-of-simplecursoradapter http://stackoverflow.com/questions/6156836/Get-selected-item-from-listview-bound-with-simplecursoradapter –

+0

Georgy, 저에게 제 대답을 준 두 번째 링크였습니다. 나는 모든 사람의 교화를 위해 그것을 아래에 게시한다. 고맙습니다! – Melanie

답변

1

잘못된 메서드를 재정의하고 있습니다. ListFragment를 사용 중이라서 CursorAdapter/ArrayAdapter를 Fragment 어딘가에 선언했을 수도 있습니다. 이 경우, 다음을 수행하십시오 다음과 같이

class yourFragemt extends ListFragment{ 

    //Member Variable 
    private SimpleCursorAdapter mAdapter; 

    .... 

    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long arg3) { 

     Cursor c = (Cursor) mAdapter.getItem(pos); 

     String value = c.getString(c 
      .getColumnIndex(ColumnIndex)); 

    } 
} 
1

대답은 :

@Override 
public void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 

    Cursor c = ((SimpleCursorAdapter)l.getAdapter()).getCursor(); 
    c.moveToPosition(position); 
    String item = c.getString(1); 
} 

내가 위의 댓글에서 게오르기 Gobozov 나에게 제공하는 두 번째 링크에서 대답을 얻었다.

관련 문제