package nu.sawicki.adapter; import java.util.ArrayList; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.TextView; public class AdapterTest extends Activity { private class NestedAdapter extends ArrayAdapter { Context context; public NestedAdapter(Activity context, ArrayList data) { super(context, R.layout.main_row, R.id.MainRowHeader, data); this.context = context; } public View getView(int position, View convertView, ViewGroup parent) { final View returnView = super .getView(position, convertView, parent); Row row = super.getItem(position); final ArrayList subRows = row.subRows; final ArrayAdapter rowAdapter = new ArrayAdapter( context, R.layout.sub_row, subRows); ((ListView) returnView.findViewById(R.id.SubListView)) .setAdapter(rowAdapter); ((TextView) returnView.findViewById(R.id.MainRowHeader)) .setText(row.title); ((Button) returnView.findViewById(R.id.Button01)) .setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { subRows.add("Podwiersz nr: " + subRows.size()); rowAdapter.notifyDataSetChanged(); } }); return returnView; } } private class Row { public ArrayList subRows; public String title; public ArrayAdapter subRowsAdapter; public String toString() { return title; } public Row(String s) { title = s; subRows = new ArrayList(); } } private ArrayList rows; private ArrayAdapter mainAdapter; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); rows = new ArrayList(); mainAdapter = new NestedAdapter(this, rows); Button button = (Button) findViewById(R.id.Button01); final ListView listView = (ListView) findViewById(R.id.MainListView); listView.setAdapter(mainAdapter); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { rows.add(new Row("główny wiersz nr: " + rows.size())); mainAdapter.notifyDataSetChanged(); } }); } }