listView入门

package com.heima.lv;
public class MainActivity extends Activity {
	
	private ListView lv;
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        /*第一步得到视图*/
        lv = (ListView) findViewById(R.id.lv);
        
        /*第二步adapter 得到控制器*/
        lv.setAdapter(new Myadapter());
    }

    // ListAdapter提供的 有 现成的 实现 类, 这些 是 与 之前 所学习的 是一样的 
 	// BaseXXX, SimpleXXX, DefaultXXX
    private class Myadapter extends BaseAdapter {

    	// 通过 adapter告诉 最要在 listView(view) 中显示 多少条 目 的数据  
		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return 50;
		}
		
		//用来 显示 每个条目时 会被调用到的 方法 
		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			/*第三步:设置内容*/
			TextView tv = new TextView(MainActivity.this);
			
			tv.setText("我是第 " +position+ "个条目 ");

			return tv;
		}
		@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;
		}
    }
    
}

listView的优化

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >
    
	<ImageView 
        android:layout_centerVertical="true"
	    android:src="@drawable/nan"
	    android:id="@+id/iv_sex"
	    android:layout_height="25dp"
	    android:layout_width="25dp"/>
	<TextView 
	    android:layout_marginLeft="15dp"
        android:text="姓名"
        android:layout_toRightOf="@id/iv_sex"
        android:layout_centerVertical="true"
        android:id="@+id/tv_name"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"/>
	<ImageView 
	    android:layout_marginRight="15dp"
        android:layout_centerVertical="true"
	    android:layout_alignParentRight="true"
	    android:src="@drawable/delete"
	    android:id="@+id/iv_delete"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"/>
</RelativeLayout>

package com.heima.studentsystem;
public class MainActivity extends Activity {
	private EditText ed_name;
	private RadioGroup rgb;
	private ListView lv;
	StudentDao sdao;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ed_name = (EditText) findViewById(R.id.ed_name);
        rgb = (RadioGroup) findViewById(R.id.rgb);
        lv = (ListView) findViewById(R.id.lv);
        
        sdao = new StudentDao(this);
    }
    
    //保存学生的信息
    public void save(View v) {
    	String name = ed_name.getText().toString().trim();
    	
    	if(TextUtils.isEmpty(name)) {
    		Toast.makeText(this, "对不起, 学生姓名和 学号不能为空", 0).show();
			return;
    	}
    	
		String sex ="male";
		//拿到 被 选择的 radio 单选项 
		int id = rgb.getCheckedRadioButtonId();
		if(id==R.id.male){
			sex ="male";
		}else {
			sex="female";
		}
		
		//调用 dao 存学生的信息
		sdao.insert(name, sex);
		
    	Toast.makeText(this, "保存成功", 0).show();
    }
    List<Student> list;
    Myadapter myadapter;
    public void display(View v) {
    	
    	refreshData();	
    }
	private void refreshData() {
		list = sdao.getAll();
		if(myadapter == null) {
			myadapter = new Myadapter();
			lv.setAdapter(myadapter);
		}else {
			//通知 数据 集合 发生变化了 
			// 在 只 刷新 部分 界面的数据 
			myadapter.notifyDataSetChanged();
		}
	}
	
	public class Myadapter extends BaseAdapter {

		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return list.size();
		}
		
		//listView的优化:参数convertView使用优化的
		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			final Student student = list.get(position);
			System.out.println("position : " + position + " convertView : " + convertView);
			 View v = null;
			 
			 if(convertView == null) {
				 //得到自定义的布局文件
				 v = View.inflate(MainActivity.this, R.layout.item, null);
			 }else {
				 v = convertView;
			 }
			 
			 TextView tv = (TextView) v.findViewById(R.id.tv_name);
			 tv.setText(student.getName());
			 
			 ImageView iv_sex = (ImageView) v.findViewById(R.id.iv_sex);
			 if("male".equals(student.getSex())) {
				 iv_sex.setImageResource(R.drawable.nan);
			 }else {
				 iv_sex.setImageResource(R.drawable.nv);
			 }
			 
			 v.findViewById(R.id.iv_delete).setOnClickListener(new View.OnClickListener() {
				
				@Override
				public void onClick(View v) {
					// TODO Auto-generated method stub
					System.out.println(" delete 被点击了 .... 哦 ");
					
					sdao.delete(student.getName());
					
					refreshData();
					
					Toast.makeText(MainActivity.this, "删除成功", 0).show();
				}
			});
			
			return v;
		}
		@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;
		}	
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值