1

基本的に私が持っているのは、ListView を表示するフラグメントです。現在、ArrayAdapter を使用しています。ただし、ArrayAdapter を拡張して独自のカスタム アダプターを作成しようとしています。次に、新しいアダプターを使用するようにコードを変更すると、次のエラーが表示されます。

「タイプ MyActivity の囲みインスタンスにアクセスできません。タイプ MyActivity の囲みインスタンスで割り当てを修飾する必要があります (egxnew A() x は MyActivity のインスタンスです)。」

コードは次のとおりです。これはすべて MyActivity 内にネストされていることに注意してください。

public static class MyFragment extends ListFragment {
    /**
     * The fragment argument representing the section number for this
     * fragment.
     */
    public static final String ARG_SECTION_NUMBER = "section_number";

    public MyFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_fixed_tab, container, false);

        // Temporarily get the content from an array
        String [] values = new String[] { "Item1", "Item2", "Item3", "Item4" };

        /******** This has no error as it is, but if I change it to CustomListAdapter, it shows the error ********/
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this.getActivity(), R.layout.workout_row, R.id.workout_name, values); 
        setListAdapter(adapter);

        return rootView;
    }
}

private class CustomListAdapter extends ArrayAdapter<String> {
    String[] list;
    public CustomListAdapter(Context context, int resource,
            int textViewResourceId, String[] array) {
        super(context, resource, textViewResourceId, array);
        list = array;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = super.getView(position, convertView, parent);
        CheckBox cb = (CheckBox) findViewById(R.id.checkbox);
        cb.setTag(position);

        cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView,
                    boolean isChecked) {
                if (isChecked) {
                    // TBI
                }

            }
        });

        return row;
    }
}
4

2 に答える 2

0

アダプタはクラス内にある必要がありますがMyFragment、現在はクラス ブラケットの外にあります。

于 2013-10-15T18:27:10.973 に答える