ListView+BaseAdapter的使用方法

一、概念:
listview就是一种逐行显示内容的控件,listview是遵循MVC设计模式的,

二、经验:
比方说textview空间中有显示内容的属性setText,那么listview控件想要显示自己的内容,也会相应的有显示内容的属性,这个属性就是“适配器”adapter,使用lv.setAdapter(adapter)设置显示内容,adapter是一个接口,实现该接口的需要复写的方法很多,所以可以是用另一种方法,继承一个类baseAdapter。

三、重要经验:
如果需要继承一个类,那么经常这个“被继承”的类的名字叫做“simpleXXX”、“defaultXXX”、“baseXXX”

四、ListView的索引:
ListView的索引是从下标为0的地方开始的。

五、示例代码:
(程序的要求是:从一个数据库中的person表中读取int类型的id、String类型的name、int类型的age)
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ScrollView;
import android.widget.TextView;


public class MainActivity extends Activity {
private List persons;
private ListView lv;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
PersonDao dao=new PersonDao(getApplicationContext());
//返回的将是一个list集合
persons=dao.queryAllPerson();
//创建控件对象
lv=(ListView) findViewById(R.id.lv);
//listview标签想要在其中设置显示内容,就需要使用adapter
lv.setAdapter(new MyAdapter());
}

private class MyAdapter extends BaseAdapter{
private static final String TAG = "MyAdapter";

@Override
/*这个方法中获取list集合的长度*/
public int getCount() {
// TODO Auto-generated method stub
return persons.size();
}

@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
/*这个方法中将list集合中的内容全部遍历出来,不需要使用for循环的*/
public View getView(int position, View convertView, ViewGroup parent) {
Log.i(TAG,"返回的view对象,位置:"+position);
TextView tv=new TextView(getApplicationContext());
//设置字体的大小
tv.setTextSize(20);
//设置字体的颜色
tv.setTextColor(Color.BLUE);
//将制定位置上的内容获取
Person person = persons.get(position);
//调用person方法中的toString方法返回内容
tv.setText("id:"+person.getId()+",姓名:"+person.getName()+",年龄:"+person.getAge());
return tv;
}

}


}


注意:鉴于google提倡使用RecyclerView替换ListView,自己也在最近的项目中全部使用了RecyclerView和CardView,所以也提倡开发者使用最新控件!

你可能感兴趣的:(Android开发)