我想在我的應用程序中顯示一個簡單的Contacs列表。從谷歌的示例代碼是非常大的和複雜的,因此我搜索其它實例..我發現這個之一:Android的接觸沒有顯示im ListView
import android.content.*;
import android.database.*;
import android.net.*;
import android.os.*;
import android.provider.*;
import android.support.v4.app.*;
import android.support.v4.content.*;
import android.view.*;
import android.widget.*;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
public class ContactsFragment extends ListFragment implements LoaderManager.LoaderCallbacks<Cursor>, AdapterView.OnItemClickListener
{
private CursorAdapter mAdapter;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState); // create adapter once
Context context = getActivity();
int layout = android.R.layout.simple_list_item_1;
Cursor c = null; // there is no cursor yet
int flags = 0; // no auto-requery! Loader requeries.
mAdapter = new SimpleCursorAdapter(context, layout, c, FROM, TO, flags);
}
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState); // each time we are started use our listadapter
setListAdapter(mAdapter); // and tell loader manager to start loading
getLoaderManager().initLoader(0, null, this);
}
// columns requested from the database
private static final String[] PROJECTION =
{
ContactsContract.Contacts._ID,// _ID is always required
ContactsContract.Contacts.DISPLAY_NAME_PRIMARY, // that's what we want to display
};
// and name should be displayed in the text1 textview in item layout
private static final String[] FROM = { ContactsContract.Contacts.DISPLAY_NAME_PRIMARY };
private static final int[] TO = { android.R.id.text1 };
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args)
{
// load from the "Contacts table"
Uri contentUri = Contacts.CONTENT_URI; // no sub-selection, no sort order, simply every row // projection says we want just the _id and the name column
return new CursorLoader(getActivity(), contentUri, PROJECTION, null, null, null);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data)
{
// Once cursor is loaded, give it to adapter
mAdapter.swapCursor(data);
}
@Override
public void onLoaderReset(Loader<Cursor> loader)
{
// on reset take any old cursor away
mAdapter.swapCursor(null);
}
@Override
public void onItemClick(AdapterView<?> p1, View p2, int p3, long p4)
{
// TODO: Implement this method
}
}
(感謝zapl)
有了這個列表視圖:
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
我的問題很簡單:列表視圖是空的!我做了什麼?錯誤的XML?或缺少什麼?
預先感謝您。
廠家批號 Lolxdfly
==========編輯=========== 我是新來的Java ..我一定打電話給活動在我主要活動? :S也許這就是錯誤.. 我曾嘗試以下:
ContactsFragment fragment = new ContactsFragment();
fragmentTransaction.add(R.id.list, fragment);
fragmentTransaction.commit();
這讓我的應用程序崩潰:
java.lang.UnsupportedOperationException:addView(查看)未在適配器視圖
支持
那麼控制活動的Java源代碼如何?你的適配器是什麼樣的。這比XML更可能是問題。順便說一句,直接發佈您的代碼,因爲鏈接可能被破壞。 – 2014-10-31 01:24:11
我很抱歉的鏈接,但我從我的手機寫..我不能按CTRL + K,我不能使用編輯器....:/ – lolxdfly 2014-10-31 10:28:39