Android怎么自定义listview布局,Android ListView自定义布局

编辑:找一个 “开箱即用” 的帖子的末尾例子!

因为你看到多行受到影响我猜它有些事情要做系统如何回收资源,也许对Button的引用是不明确的。

我不确定我在哪里选择了这种做法(Android教程或我们以前的开发人员通过这些教程学习了Android)。然而,建议是使用一个嵌套类ViewHolder

private static class ViewHolder {

public Button processCheck;

}

将此放在适配器或任何类的getView()在声明并修改它是这样:

public View getView(int position, View convertView, ViewGroup parent) {

View v = convertView;

$ViewHolder viewHolder; //wait for the magic!

if (v == null) {

v = li.inflate(R.layout.process_row, null);

$viewHolder = new ViewHolder();

$viewHolder.processCheck = (Button) v.findViewById(R.id.processCheck);

$v.setTag(viewHolder);

//ok we somewhat stuffed an object with the Button into our View... so what?

}

$viewHolder = (ViewHolder) v.getTag();

//see explanation below

$viewHolder.processCheck.setOnClickListener(new View.OnClickListener() {

//set the onClickListener for this and only this button.

@Override

public void onClick(View v) {

if (process.isChecked() == false) {

process.setChecked(true);

processCheck.setBackgroundColor(Color.BLUE);

}

else {

process.setChecked(false);

processCheck.setBackgroundColor(Color.RED);

}

}

});

return v;

}

(我打上$变化。我认为这样他们应该很容易发现,如果我使用eclipse。否则查找+替换^^)

因此​​将返回一个与调用的视图关联的对象。对象是如此令人难以置信的泛型,您可以将其称为您创建的ViewHolder对象。因此,您可以引用按钮并将其存储在对象中。

现在,无论何时获得ListView,都可以检索对象并设置新鲜和新鲜的OnclickListener。这样你只有一个Listener被调用。

请注意,您不必再次致电v.setTag();来“保存”您的更改。

一个陷阱可能是如果你疯狂的东西,像在同一个列表中膨胀不同的布局,有什么理由。你也许会不同ViewHandlers分配给他们,如:

if (v == null) {

if(someCriteria) {

v = li.inflate(R.layout.process_row, null);

viewHolder = new ViewHolder();

}

v = li.inflate(R.layout.process_another_row, null);

viewHolder = new AnotherViewHolder();

}

随后的getView()一个ViewHolder或其他未经检查的通话可能会在运行时抛出一个错误!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值