ListView使用技巧(五):动态改变ListView布局

这里需要研究的一个问题时:实现如下功能:

点击一个item的时候显示一张图,其他item显示一张图和一个textView,动态改变点击item的布局达到一个focus的效果。。

这个效果实现的关键还是BaseAdapter:给item设置两个不同的布局——focus和normal。

	private View addFocusView(int i)
	{
		ImageView iv = new ImageView(context);
		iv.setImageResource(R.drawable.ic_launcher);
		return iv;
	}
	
	private View addNormalView(int i)
	{
		LinearLayout layout = new LinearLayout(context);
		layout.setOrientation(LinearLayout.HORIZONTAL);
		ImageView iv = new ImageView(context);
		iv.setImageResource(R.drawable.ic_launcher);
		layout.addView(iv,new LinearLayout.LayoutParams
				(LinearLayout.LayoutParams.WRAP_CONTENT, 
				LinearLayout.LayoutParams.WRAP_CONTENT));
		TextView tv = new TextView(context);
		tv.setText(mData.get(i));
		layout.addView(tv,new LinearLayout.LayoutParams
				(LinearLayout.LayoutParams.WRAP_CONTENT, 
				LinearLayout.LayoutParams.WRAP_CONTENT));
		layout.setGravity(Gravity.CENTER);
		return layout;
	}

下面回到BaseAdapter,在getView()方法中,通过判断点击的位置来改变相应的视图:

<pre name="code" class="java">	public View getView(int position, View convertView, ViewGroup parent)
	{
		LinearLayout layout = new LinearLayout(context);
		layout.setOrientation(LinearLayout.VERTICAL);
		
		if(mCurrentItem == position)
		{
			layout.addView(addFocusView(position));
		}else {
			layout.addView(addNormalView(position));
		}
		return layout;
	}

 

当然,你在点击的时候listView需要刷新,

	listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
		public void onItemClick(AdapterView<?> parent, View view, int position, long id)
		{
			adapter.setCurrentItem(position);
			adapter.notifyDataSetChanged();
		}
	});


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值