0

この投稿から使用して、セクションのリストビューにいくつかのデータを表示していますSepatateListAdapter

私のコードは次のとおりです。

ListView photos_list = (ListView) findViewById(R.id.photos_list);

separate_adapter = new SeparatedListAdapter(this);

AddedPhotosAdapter one_adapter = new AddedPhotosAdapter(this, R.layout.row_acc_info , photos_instagram);
separate_adapter.addSection(" Section1 ", one_adapter);

AddedPhotosAdapter two_adapter = new AddedPhotosAdapter(this, R.layout.row_acc_info , photos_fb);
separate_adapter.addSection(" Section2 ", two_adapter);

AddedPhotosAdapter three_adapter = new AddedPhotosAdapter(this, R.layout.row_acc_info , photos_picasa);
separate_adapter.addSection(" Section3 ", thee_adapter);

photos_list.setAdapter(separate_adapter);

コンテキストメニューにも登録しました

registerForContextMenu(photos_list);

これは、コンテキストメニューの作成とメニューから選択された項目のコードです

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
    if (v.getId() == R.id.photos_list) {
        AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo;
        Log.i(TAG, "*********position******" +info.position);
        Object item = separate_adapter.getItem(info.position);
        PhotosInfo total = (PhotosInfo) item ;          
        menu.setHeaderTitle(total.getPhoto_Name());

        menu.add(0, 1, 0, "Delete photo account");  
        menu.add(0, 2, 1, "Cancel"); 
    }
}

@Override
public boolean onContextItemSelected(android.view.MenuItem item) {
    if (item.getGroupId() == 0) {
        switch(item.getItemId()) {
        case 1: 
            break;
        case 2:                  
            break;
        }
    }
    return super.onContextItemSelected(item);
}

これは、SeparateListAdapter を使用してリスト ビューに使用しているコードです。ここでこのエラーが発生していますFATAL EXCEPTION: main E/AndroidRuntime(9228): java.lang.ClassCastException: java.lang.String E/AndroidRuntime(9228): at com.colours.pipemedia.photos.PhotosMain.onCreateContextMenu(PhotosMain.java:170)

これは、コードでエラーの原因となっている行です

PhotosInfo total = (PhotosInfo) item ;

このコードを単一のアダプターに使用していますが、正常に動作しています。しかし、別のリストアダプターを使用すると、エラーが発生します。この要件の解決策は何ですか?

4

1 に答える 1

2

これSeparatedListAdapterを使用していると思います(ただし、SeparatedListAdapter は標準コンポーネントではなく、常に問題に関連するコードを提供する必要があるため、このリンクを投稿する必要があります。リンクを含めるように投稿を編集しました)

getItem()問題は、パラメーターが である場合にわかるように0Stringセクション名を返すだけであり、そうでない場合は、保持するタイプのアイテムを返すことですAdapter

したがって、例外を回避するには、次のように返される型を確認する必要があります。

Object item = separate_adapter.getItem(info.position);
if (item instanceof String) {
    // It's a section title, do something about it
} else {
    // It's an actual item from one of the adapters
    PhotosInfo total = (PhotosInfo) item ;          
    menu.setHeaderTitle(total.getPhoto_Name());

    menu.add(0, 1, 0, "Delete photo account");  
    menu.add(0, 2, 1, "Cancel");
}
于 2013-03-07T08:30:19.530 に答える