-1

したがって、「final int sortColumnIndex = c.getColumnIndex(YOUR_SORT_COLUMN_NAME);」という 3 つのエラーが発生します。& "public class MyAdapter extends CursorAdapter implements SectionIndexer" <--- これは 2 回エラーとしてマークされています。

私の MainActivityNext.java

package testing.android.application.three;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Set;

import android.os.Bundle;
import android.support.v4.widget.CursorAdapter;
import android.widget.AlphabetIndexer;
import android.widget.ArrayAdapter;
import android.widget.SectionIndexer;
import android.app.Activity;
import android.app.ListActivity;
import android.content.Context;
import android.database.Cursor;

public class MainActivityNext extends ListActivity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_activity_next);

}

public class MyAdapter extends CursorAdapter implements SectionIndexer
{
    // All valid characters. May want to include numbers, etc if they show up 
    // in your sort column
    private final static String ALPHABET = "abcdefghijklmnopqrstuvwxyz";

    private AlphabetIndexer mIndexer = null;

    public MyAdapter(Context context, Cursor c, int flags)
    {
        super(context, c, flags);
        // Assumes your cursor is non-null, 
        // otherwise do this in swapCursor if mIndexer==null
        final int sortColumnIndex = c.getColumnIndex(YOUR_SORT_COLUMN_NAME);
        mIndexer = new AlphabetIndexer(c, sortColumnIndex,
            ALPHABET);
    }

    public Cursor swapCursor(Cursor newCursor)
    {
        super.swapCursor(newCursor);
        // Make sure the AlphabetIndexer knows about the new Cursor
        mIndexer.setCursor(newCursor);
        return newCursor;

    }

    public int getPositionForSection(int section)
    {
        // AlphabetIndexer does all the hard work
        return mIndexer.getPositionForSection(section);
    }

    public int getSectionForPosition(int position)
    {
        // AlphabetIndexer does all the hard work
        return mIndexer.getSectionForPosition(position);
    }

    public Object[] getSections()
    {
        // AlphabetIndexer does all the hard work
        return mIndexer.getSections();
    }

}

}
4

3 に答える 3

1

Logcatによると:

アクティビティ ComponentInfo{testing.android.application.three/testing.android.application.three.MainActivityNext} を開始できません: java.lang.RuntimeException: コンテンツには、id 属性が 'android.R.id.list' である ListView が必要です

リストアクティビティを使用または拡張するときはいつでも、作成するビューにはその ID を持つリストビューが必要です。

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

     <ListView android:id="@android:id/list"
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:background="#00FF00"
               android:layout_weight="1"
               android:drawSelectorOnTop="false"/>

     <TextView android:id="@android:id/empty"
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:background="#FF0000"
               android:text="No data"/>
 </LinearLayout>

詳細については、 http://developer.android.com/reference/android/app/ListActivity.htmlを参照してください。

于 2013-06-02T16:41:29.747 に答える
0

ログのように:

コンテンツには、id 属性が「android.R.id.list」である ListView が必要です。

@id/android:listListView の xml で idを使用する必要があることを意味します。次のようにします。

<ListView android:id="@id/android:list"  
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
         ..../>
于 2013-06-02T16:41:50.287 に答える
0

アクティビティが ListActivity を拡張する場合、以下のように ListView の xml の ID を設定する必要があります

< ListView
    android:id="@android:id/list"
...
于 2013-06-02T16:42:08.433 に答える