結合子類父類和LIstView適配器相關設置,初步體驗類的多態。

在初級階段,我們常對listview的適配器都是在一個activity類中全部寫滿。當你接觸項目多了,你會發現大神都把各種適配器放一個包裏,要用直接傳如相關參數到適配器的構造方法設置ListView。今天做了個簡單的demo,對於菜鳥理解多態有幫助。在MainActivity中代碼如下

public class MainActivity extends Activity {

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        ListView list = (ListView) findViewById(R.id.listView1);

        MyAdapter my  = new MyAdapter(5, MainActivity.this);

        list.setAdapter(my);

    }

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.

        getMenuInflater().inflate(R.menu.main, menu);

        return true;

    }

}

在MyAdapter類中繼承和代碼如下

public class MyAdapter extends BaseAdapter{

private LayoutInflater inflater;

private int i;

public MyAdapter(int i,Context context) {

this.i = i;

inflater = LayoutInflater.from(context);

}

@Override

public int getCount() {

// TODO Auto-generated method stub

return 10;

}


@Override

public Object getItem(int position) {

// TODO Auto-generated method stub

return null;

}

@Override

public long getItemId(int position) {

// TODO Auto-generated method stub

return 0;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

// TODO Auto-generated method stub

View inflate = inflater.inflate(R.layout.item, null);

return inflate;

}

}

在MainActivity中 MyAdapter my  = new MyAdapter(5, MainActivity.this);就執行了MyAdapter中的構造方法,一般只會執行到MyAdapter的構造方法,但由於BaseAdapter的特殊性,它自動調用getcount()等方法。這樣就通過BaseAdapter適配器設置了ListView的相關設置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章