基本的に私が持っているのは、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;
}
}