이 방법은 간단합니다. ArrayAdapter를 확장하기 만하면됩니다. 내 ArrayAdapter와는 다르게 두 가지를 수행합니다
의 getView()가 위치를 확인하고 적절한 리소스를로드 내 어댑터는 ResourceIds의 배열을 대신 하나 개의 ResourceId를 전달
이것은 사소한 예. 첫 번째 절반이 한쪽으로 보이고 두 번째 절반이 다른 것보다 더 복잡하게 만들 계획이라면 getViewTypeCount()과 getItemViewType()을 무시해야합니다.
근무 예 :
public class Example extends Activity {
public class MyArrayAdapter<T> extends ArrayAdapter<T> {
LayoutInflater mInflater;
int[] mLayoutResourceIds;
public MyArrayAdapter(Context context, int[] textViewResourceId, List<T> objects) {
super(context, textViewResourceId[0], objects);
mInflater = (LayoutInflater)context.getSystemService (Context.LAYOUT_INFLATER_SERVICE);
mLayoutResourceIds = textViewResourceId;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null && position > 2)
convertView = mInflater.inflate(mLayoutResourceIds[1], parent, false);
return super.getView(position, convertView, parent);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String[] array = new String[] {"one", "two", "three", "four", "five", "six"};
List<String> list = new ArrayList<String>();
Collections.addAll(list, array);
ListView listView = new ListView(this);
listView.setAdapter(new MyArrayAdapter<String>(this, new int[] {android.R.layout.simple_list_item_1, android.R.layout.simple_list_item_single_choice}, list));
setContentView(listView);
}
}
출처
2012-08-02 23:05:09
Sam
가능한 중복 : http://stackoverflow.com/questions/4777272/android-listview-with-different-layout-for-each-row – Ixx