ListView
을 ListView
으로 채우는 동안 이상한 문제가 발생했습니다. ListFragment
에 대한 내 소스 코드는 SimpleCursorAdapter
입니다.리스트 아이템을 클릭/탭하지 않으면 ListView 컨텐츠가 표시되지 않습니다.
* 인한 문제 : *를 통해 목록에서 일부 데이터를 추가 한 후 내 addEditTaskActivity
(내가 삽입 아무 문제가 없음을 테스트했습니다.)이 ListView
의 내용이 표시되지 않습니다. 그러나 목록 항목을 클릭/탭하면 올바른 데이터가 표시됩니다.
나는 여기서 무엇을 잘못하고 있는지 모른다.
TasksListFragment.java
public class CourseTaskListFragment extends SherlockListFragment implements
LoaderCallbacks<Cursor>, OnItemClickListener {
private LoaderManager mLoaderManager;
private ListView mListView;
protected int dialogOkCancel;
protected long selectedTID;
private CursorLoader mCursorLoader;
private AsyncQueryHandler mAsyncQueryHandler;
private Cursor mCursor;
private Context context;
private long semesterID_FK;
private SimpleCursorAdapter mSimpleTaskListAdapter;
// ---------------------------------------------------------------------
public CourseTaskListFragment(Context context, long currentCourseId,
long semesterID_FK) {
super();
this.currentCourseId = currentCourseId;
this.semesterID_FK = semesterID_FK;
this.context = context;
}
// ---------------------------------------------------------------------
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i(StudyManagerDataSource.LOG_TAG,
"TaskListFragment onCreate called!");
// Enable the option menu for the Fragment
setHasOptionsMenu(true);
setRetainInstance(true);
mSimpleTaskListAdapter = new SimpleCursorAdapter(context,
android.R.layout.simple_list_item_1, null,
new String[] { Task.COL_NAME },
new int[] { android.R.id.text1 },
SimpleCursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
setListAdapter(mSimpleTaskListAdapter);
mLoaderManager = getLoaderManager();
mLoaderManager.initLoader(1, null, this);
} // end onCreate
// ---------------------------------------------------------------------
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater
.inflate(R.layout.course_task_fragment, container, false);
}
// ---------------------------------------------------------------------
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mListView = getListView();
mListView.setLongClickable(true);
registerForContextMenu(mListView);
mListView.setOnItemClickListener(this);
mListView.setOnItemLongClickListener(this);
}
// -----------------------------------------------------------------
@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
mCursorLoader = new CursorLoader(getActivity(), Task.CONTENT_URI,
Task.allColumns, Task.COL_COURSE_ID_FK + " = ? and "
+ Task.COL_SEMESTER_ID_FK + " = ? ", new String[] {
String.valueOf(currentCourseId),
String.valueOf(semesterID_FK) }, null);
return mCursorLoader;
}
// -----------------------------------------------------------------
@Override
public void onLoadFinished(Loader<Cursor> arg0, Cursor cursor) {
// TODO Auto-generated method stub
if (mSimpleTaskListAdapter != null && cursor.moveToFirst()) {
mSimpleTaskListAdapter.swapCursor(cursor);
} else {
}
}
// -----------------------------------------------------------------
@Override
public void onLoaderReset(Loader<Cursor> arg0) {
if (mSimpleTaskListAdapter != null)
mSimpleTaskListAdapter.swapCursor(null);
}
}
내 레이아웃의 소스 코드는 다음과 같습니다
* course_task_fragment.xml *는 Fragment
이미있다
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal|center_vertical"
android:orientation="vertical" >
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ListView>
<TextView
android:id="@android:id/empty"
style="@style/emptyListMessage"
android:text="@string/no_homework" />
</RelativeLayout>
* ListView의 내용이 표시되지 않습니다. * - 내용이없는 행을 보거나 내용이 전혀 없습니다. – Luksprog
'onClickListener' 코드는 어디에 있나요? – Sean
@Luksprog 목록 항목의 내용은 선택한 상태 일 때만 표시됩니다. 즉, 내가 그것을 탭할 때 내용이 표시됩니다 ... –