ListView特效1

本文介绍了一种自定义的Android列表视图组件——双头部列表视图的实现方法。该组件包含两个头部图片视图,并随滚动显示或隐藏一个浮动头部。文中详细展示了如何通过Java代码创建并初始化视图组件,设置监听器来响应滚动事件,以及添加数据适配器以填充列表内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class TwoHeaderListView extends FrameLayout{

	private static final String TAG = "TwoHeaderListView";
	
	ImageView header1;
	ImageView header2;
	ListView listview;
	
	ImageView fixheader;

	
	public TwoHeaderListView(Context context) {
		super(context);
        init(context);
	}

	
	private void init(Context ctx){
		
		//固定头其实是另外的浮在上层的一个view和header2张的一样的一个view。
	    	fixheader = new ImageView(ctx);
	    	fixheader.setBackgroundColor(Color.RED);
	    	fixheader.setVisibility(View.GONE);

				
		header1 = new ImageView(ctx);		
		header2 = new ImageView(ctx);
		header1.setBackgroundColor(Color.GRAY);
		header2.setBackgroundColor(Color.RED);
		AbsListView.LayoutParams lp2 = new AbsListView.LayoutParams(LayoutParams.FILL_PARENT, 50);
		header2.setLayoutParams(lp2);
		header1.setLayoutParams(lp2);
		
		listview = new ListView(ctx);
		listview.setOnScrollListener(new OnScrollListener(){

			@Override
			public void onScroll(AbsListView view, int firstVisibleItem,
					int visibleItemCount, int totalItemCount) {
				if (firstVisibleItem > 0){	
					fixheader.setVisibility(View.VISIBLE);//设置成可见
					fixheader.bringToFront();
				} else{
					fixheader.setVisibility(View.GONE);
				}
			}

			@Override
			public void onScrollStateChanged(AbsListView view, int scrollState) {
			}
			
		});
		

		this.addView(listview);	
		
		LayoutParams lp = new FrameLayout.LayoutParams(LayoutParams.FILL_PARENT, 50);
	    this.addView(fixheader, lp);

	    
	    
		LinkedList<String> mListItems = new LinkedList<String>();
        mListItems.addAll(Arrays.asList(mStrings));

        adapter = new ArrayAdapter<String>(ctx,
                android.R.layout.simple_list_item_1, mListItems);
        

        listview.addHeaderView(header1);
        listview.addHeaderView(header2);
        listview.setAdapter(adapter);
		

	}
	
	ArrayAdapter<String> adapter = null;
	
    private String[] mStrings = {
            "Abbaye de Belloc", "Abbaye du Mont des Cats", "Abertam",
            "Abondance", "Ackawi", "Acorn", "Adelost", "Affidelice au Chablis",
            "Afuega'l Pitu", "Airag", "Airedale", "Aisy Cendre",
            "Allgauer Emmentaler"};
	
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值