本实例将会通过扩展BaseAdapter来实现Adapter,扩展BaseAdapter可以取得对Adapter最大的控制权 :程序要创建多少个列表项,每个列表项的组件都由开发者决定。
public class MainActivity extends AppCompatActivity { ListView mylist; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mylist= (ListView) findViewById(R.id.mylist); BaseAdapter adapter=new BaseAdapter() { @Override public int getCount() { //指定一共包含40个选项 return 40; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { //创建一个LinearLayout,像其中添加两个组件 LinearLayout line=new LinearLayout(MainActivity.this); line.setOrientation(0); ImageView image=new ImageView(MainActivity.this); image.setImageResource(R.drawable.ic_launcher); TextView text=new TextView(MainActivity.this); text.setText("第"+(position+1)+"列表行"); text.setTextSize(20); text.setTextColor(Color.RED); line.addView(text); line.addView(image); return line; } }; mylist.setAdapter(adapter); } }
扩展该对象需要重写如下4个方法。
>getCount():该方法的返回值控制该Adapter将会包含多少个列表项。
>getItem(int position):该方法返回的值决定position处的列表项内容。
>getItemId(int postion):该方法的返回值决定第position处的列表项ID。
>getView(int postion,View convertion ,ViewGroup parent):该方法的返回值决定第postion处的列表项。