개발자 문서에 ArrayAdapter의 아이템을 세팅할 수 있는 메소들이 나와 있습니다.
https://developer.android.com/reference/android/widget/ArrayAdapter
void add(T object)
Adds the specified object at the end of the array.
void addAll(T... items)
Adds the specified items at the end of the array.
void addAll(Collection<? extends T> collection)
Adds the specified Collection at the end of the array.
void clear()
Remove all elements from the list.
님의 경우는 어댑터에 String타입을 받고 있기 있기 때문에 Button을 추가할 수는 없습니다.
ArrayAdapter Item에 공통적으로 사용할 수 있는 클래스를 하나 만드세요.
public enum AdapterItemType {
WORKOUT,
BUTTON
}
public class AdapterItem {
private final String text;
private final AdapterItemType itemType;
//or
@LayoutRes private final int layoutId;
public AdapterItem(String text, AdapterItemType itemType) {
this.text = text;
this.itemType = itemType;
}
public String getText() {
return text;
}
public AdapterItemType getItemType() {
return itemType;
}
}
ArrayList<AdapterItem> values = new ArrayList<>(Arrays.asList(
new AdapterItem("벤치프레스", AdapterItemType.WORKOUT),
new AdapterItem("인클라인 벤치프레스", AdapterItemType.WORKOUT),
...
));
ArrayAdapter<AdapterItem> adapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
adapter.add(new AdapterItem("Click Me", AdapterItemType.BUTTON))
ArrayAdapter 안에서 AdapteritemType에 따라 아래 메소드들을 오버라이드 하셔서 뷰를 그려주는 방법을 달리하시면 됩니다.
AdapterItem에 layout resource id 를 추가하셔서 Layout 을 inflate 하셔도 좋을 것 같네요.
getDropDownView(int position, View convertView, ViewGroup parent)
getView(int position, View convertView, ViewGroup parent)