2012-02-07 8 views
1

私は\でファイルを作成し、RES \ contactlist.xmlカスタムレイアウトファイルが認識されないのはなぜですか?それは私のコードでは認識されない

という名前のレイアウトしかし:

SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, 
     //android.R.layout.simple_list_item_1, mContacts, //if cre8 own layout, replace "simple_[etc]" 
     //android.R.layout.simple_list_item_checked, mContacts, // or simple_list_item_multiple_choice 
     //android.R.layout.simple_list_item_multiple_choice, mContacts, 
     android.R.layout.contactlist, mContacts, // <- contact list ist xml-non-grata 
     new String[] { ContactsContract.Contacts.DISPLAY_NAME }, 
     new int[] { android.R.id.text1 }); 

私は、各連絡先のための3つのチェックボックスを持っていることをカスタムレイアウトを作成したいです。

私のカスタムレイアウトが有効なものとして受け入れられないのはなぜですか?最後に

:2012年2月9日に更新しました

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ! stackOverflowersの助けを借り、この記事では

:私は最終的にそれが働いてしまったhttp://www.vogella.de/articles/AndroidListView/article.html

。いつものように、あなたがいくつかのコンセプトを掘り起こすと、それほど難しくありません。これは、コードのこの種の使用に帰着のI /借り懇願/盗んだと適合れる:

@Override公共ボイドのonCreate(バンドルsavedInstanceState){ super.onCreate(savedInstanceState)。

// Return all contacts, ordered by name 
String[] projection = new String[] { ContactsContract.Contacts._ID, 
     ContactsContract.Contacts.DISPLAY_NAME }; 
mContacts = managedQuery(ContactsContract.Contacts.CONTENT_URI, 
     projection, null, null, ContactsContract.Contacts.DISPLAY_NAME); 

// Display all contacts in a ListView 
SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, 
     R.layout.ondemandandautomatic_authorize, mContacts, 
     new String[] { ContactsContract.Contacts.DISPLAY_NAME }, 
     new int[] { R.id.contactLabel }); 

setListAdapter(mAdapter); 

}

...と必ず "ondemandandautomatic_authorize" を作る(またはものは何でも、あなたのレイアウトファイルに名前を付ける)は、このようなものである(未完成、しかし、あなたのアイデアを得る):

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <CheckBox 
     android:id="@+id/checkBox1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="1" /> 

     <CheckBox 
     android:id="@+id/checkBox2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="2" /> 

     <CheckBox 
     android:id="@+id/checkBox3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="3" /> 

    <TextView 
     android:id="@+id/contactLabel" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="(replace this)" 
     android:textSize="20px" > 
    </TextView> 

</LinearLayout> 

... "R.id.contactLabel"が "R.id."に置き換えられました

明らかに、もっと大きな問題がありますが、大きな障害があります。

答えて

7

それはあなたのシステムリソースを使用している際にアンドロイドを使用している

R.layout.contactlist 

なく

android.R.layout.contactlist 

でなければなりません。

1

Eclipseを使用している場合は、Eclipseを再起動するようにしてください。時には、私は新しいXMLを追加するか、いくつかを削除すると、私の日食は十分にスマートではない、私は理由を知らない。 Clean Projectのような他の方法があります(ただし、XMLにエラーがないことを確認する必要があります。そうしないと、Rは永遠に消え去ります)。

かなりわからないが、私はuがsetContentView(R.Layout.contactlistを)逃したと思う、それは

1

を助ける願っています。...また、uがあなたのマニフェストにこれを指定する必要があります。

+0

マニフェストには何を指定しますか? –

2

アンドロイドで生成されたRファイル(android.R.layout.contactlist)ではなく、アプリケーションで生成されたRファイル(R.layout.contactlist)を使用します。

1

android.R.layout.zzzをR.layout.zzzに置き換えても、お客様のレイアウトが認識されないというエラーが表示されることがあります。

私はちょうどこの同じ問題に直面しました。

私の解決策は、そのテキストを削除してもう一度書き込むことでした。 "R"と書いて徐々に書き込むこともできます。 Alt + Spaceを押すと、Eclipseは2つのオプション(android.RとR.)を表示し、Rを選択して残りを続行します。

関連する問題