Fragment
에 BaseAdapter
이라는 어댑터가 들어있는 코드를 작성하고 있습니다. 일부 항목을 어댑터에 추가하고 화면에 표시하려고합니다. 여기에 코드가 있습니다.Android : 조각의 어댑터가 작동하지 않습니다.
public class SettingsFragment extends Fragment {
private ListView lvSettings;
private SettingsAdapter settingsAdapter = new SettingsAdapter();
private int[] icons = {
R.drawable.ic_developer
};
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_settings, null);
lvSettings = (ListView) view.findViewById(R.id.lvSettings);
lvSettings.setAdapter(settingsAdapter);
initializeAdapter();
return view;
}
private void initializeAdapter() {
int size = icons.length;
SettingsItem[] settingsItems = new SettingsItem[size];
for(int i=0; i<size; i++) {
settingsItems[i] = new SettingsItem(getActivity());
settingsItems[i].setIcon(icons[i]);
settingsItems[i].setTitle(getResources().getStringArray(R.array.settings_items)[i]);
settingsAdapter.addItem(settingsItems[i]);
}
settingsAdapter.notifyDataSetChanged();
}
private class SettingsAdapter extends BaseAdapter {
private ArrayList<SettingsItem> itemsList = new ArrayList<>();
@Override
public int getCount() {
return itemsList.size();
}
@Override
public Object getItem(int position) {
return itemsList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View view, ViewGroup viewGroup) {
return view;
}
public void addItem(SettingsItem item) {
itemsList.add(item);
}
}
private class SettingsItem {
private ImageView ivIcon;
private TextView tvTitle;
private LayoutInflater inflater;
SettingsItem(Context context) {
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.listitem_settings, null);
ivIcon = (ImageView) view.findViewById(R.id.ivSettingsItem);
tvTitle = (TextView) view.findViewById(R.id.tvSettingsItem);
}
public void setIcon(int icon) {
ivIcon.setImageResource(icon);
}
public void setTitle(String title) {
tvTitle.setText(title);
}
}
}
이 코드를 실행했지만 화면에 아무 것도 표시되지 않습니다. 목록 항목을 화면에 표시하려면이 코드를 어떻게 수정해야합니까?
왜 맞춤 어댑터입니까? 왜 'ArrayAdapter'가 아닌가? – pskink
나는 지금까지'BaseAdapter'를 사용하는 데 익숙해 져 있기 때문에 ... –
thats wrong, 이미 존재하는 어댑터를보고 나중에 많은 시간을 절약 할 것입니다. – pskink