ListView 展开/隐藏

ListView 本意只是:让数据和TextView一次绑定 能自适应数据的长度 而自动+/-行数

 

 

但是 现在 要求 ListView 能支持 展开/隐藏 即:当点中某项时 其能显示更多内容 可以么? 当然

 

 

[代码 步骤]

1. 定义一下图片及文字数组 供显示用

int[] image = {
		R.drawable.beijing1_s,R.drawable.beijing2_s,R.drawable.beijing3_s,R.drawable.beijing4_s,R.drawable.beijing5_s
	};
	String[] text = {
		"贝贝","晶晶","欢欢","盈盈","妮妮"
	};

 

 

2. 定义BaseAdapter 并根据点击的ID 做比较 决定是否添加更多内容

public class ListMoreAdapter extends BaseAdapter {
    	Activity activity;
    	LayoutInflater lInflater;
    	
    	public ListMoreAdapter(Activity a){
    		activity = a;
    		
    		lInflater = activity.getLayoutInflater();
    	}
    	
		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return image.length;
		}

		@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 position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			// TODO Auto-generated method stub
			LinearLayout layout = new LinearLayout(activity);
	        layout.setOrientation(LinearLayout.VERTICAL);
	        
	        layout.addView(addTitleView(position));
	        
	        
	        if(ID==position){
	        	layout.addView(addCustomView(position));
	        }
	        
			return layout;
		}
    	
		
		public View addTitleView(int i){
			LinearLayout layout = new LinearLayout(activity);
	        layout.setOrientation(LinearLayout.HORIZONTAL);
	        
	        ImageView iv = new ImageView(activity);
	        iv.setImageResource(image[i]);
	        
	        layout.addView(iv,
	        		new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
	        
	        
	        TextView tv = new TextView(activity);
	        tv.setText(text[i]);
	        
	        layout.addView(tv,
	        		new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
	        
	        layout.setGravity(Gravity.CENTER);
	        return layout;
		}
		
		
		public View addCustomView(int i){
			View view = new View(activity);
			
			switch(i){
			case 0:
				ImageView iv = new ImageView(activity);
				iv.setImageResource(R.drawable.beijing4_b);
				
				view = iv;
				break;
				
			case 1:
				view = lInflater.inflate(R.layout.layout1, null);
				break;
				
			case 2:
				
				break;
			}
			
			return view;
			
		}
    }

 

 

3. 代码比较简单 没什么细说的 不理解的请跟帖 好答复之

 

4. emulator 运行截图:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值