0

そこで、友人から送られてきたこのVogella ContentProviderチュートリアルに従っています。セクション 6.3 の最後を見ると、彼が次のように言っていることがわかります。

このアプリケーションを実行すると、 People アプリケーションのContentProviderからデータが読み取られ、 TextViewに表示されます。通常、そのようなデータはListViewに表示します。


私は Android での作業 (および一般的なプログラミング) が初めてなので、main.xml の TextView タグを ListView に変更したところ、予想どおり、エミュレーターでアプリを実行するとクラッシュします。

オンデマンド コード:

XML ファイル:

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

<TextView
    android:id="@+id/contactview"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

</LinearLayout> 


Java ファイル:

package de.vogella.android.contentprovider;

import android.app.Activity;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.widget.TextView;

public class ContactsActivity extends Activity {

/** Called when the activity is first created. */

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_contacts);
    TextView contactView = (TextView) findViewById(R.id.contactview);

    Cursor cursor = getContacts();

    while (cursor.moveToNext()) {

      String displayName = cursor.getString(cursor
          .getColumnIndex(ContactsContract.Data.DISPLAY_NAME));
      contactView.append("Name: ");
      contactView.append(displayName);
      contactView.append("\n");
    }
  }

  private Cursor getContacts() {
    // Run query
    Uri uri = ContactsContract.Contacts.CONTENT_URI;
    String[] projection = new String[] { ContactsContract.Contacts._ID,
        ContactsContract.Contacts.DISPLAY_NAME };
    String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '"
        + ("1") + "'";
    String[] selectionArgs = null;
    String sortOrder = ContactsContract.Contacts.DISPLAY_NAME
        + " COLLATE LOCALIZED ASC";


    return managedQuery(uri, projection, selection, selectionArgs,
        sortOrder);
  }

 } 

私は何か間違ったことをしていると確信しています.誰かが私を正しい方向に向けるか、TextViewからListViewに切り替える方法を教えてもらえますか?

また、これは関係ありませんが、adt バンドルをダウンロードしたところ、R.java ファイルが正しく生成されない場合があり、R.java ファイルに変更を加えず、生成されるデフォルトのファイルのままにします。あなたは新しいAndroidプロジェクトを作成しますが、その理由は何ですか?
注: 回答を受け入れるために、この質問に回答する必要はありません。

4

0 に答える 0