ListView控件的使用的两种方法
一.使用BaseAdapter
1.在activity文件中定义一个listview控件
2.在layout文件夹中自己定义一个item.xml文件,用来展示数据
3.在MainActivity中定义一个MyAdapter继承BaseAdapter,实现父类中的四个方法
4.主要重写getCount()和getView(int position, View convertView, ViewGroup parent)方法
5.getCount()方法主要返回ListView控件展示条目的个数
6.getView()方法主要返回一个View对象展示到每一个条目上
7.在MainActivity中拿到ListView对象调用setAdapter()方法,就可以将数据展示出来
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// [1]找到我们关心的控件
ListView lv = (ListView) findViewById(R.id.lv);
//设置数据适配器
lv.setAdapter(new MyAdapter());
}
private class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
return 7;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//[1]想办法把我们自己定义的布局转换成一个view对象 就可以了
View view;
if (convertView == null) {
//创建新的view对象 可以通过打气筒把一个布局资源转换成一个view对象
//resource 就是 我们定义的布局文件
//[一☆☆☆☆]获取打气筒服务
// view = View.inflate(getApplicationContext(), R.layout.item, null);
//[二☆☆☆☆]获取打气筒服务
// view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.item, null);
//[三☆☆☆☆]获取打气筒服务
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.item, null);
}else {
//复用历史缓存对象
view = convertView;
}
return view;
}
}
}
二.使用ArrayAdapter
1.在activity文件中定义一个listview控件
2.在layout文件夹中自己定义一个item.xml文件,用来展示数据
3.创建一个arrayAdapter
4.在MainActivity中拿到ListView对象调用setAdapter()方法,就可以将数据展示出来
如果我们要展示的数据就存在一个数组中,我们一般用ArrayAdapter就可以了
public class MainActivity extends Activity{
String objects[] = {"老张","老方","老黎","老毕","老刘","老韩","agjksd","sdgsdg"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// [1]找到我们关心的控件
ListView lv = (ListView) findViewById(R.id.lv);
// [2]创建一个arrayAdapter
// ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.item, objects);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.item1, R.id.tv_name, objects);
//[3]设置数据适配器 要会触类旁通
lv.setAdapter(adapter);
}
}