我想在listview中添加一个新行,其中包含唯一的背景图像,旧记录采用默认背景。我使用的是listadaper,我怎样才能实现这个目标?
我的部分代码如下:
if(position==0){
holder.row.setBackgroundResource(R.drawable.layer_selected);
holder.text.setTextColor(Color.BLACK);
} else if(position>0){
holder.row.setBackgroundResource(R.drawable.layer_unselected);
holder.text.setTextColor(Color.WHITE);
}
public View getView(final int position, View convertView, ViewGroup parent) {[
final ViewHolder holder;[
if (convertView==null) {
convertView=newView(position, parent);
holder = new ViewHolder();
holder.remove=(ImageView)convertView.findViewById(R.id.remove);
holder.row=(ImageView)convertView.findViewById(R.id.row);
holder.text=(TextView)convertView.findViewById(R.id.text);
holder.layer=
(RelativeLayout)convertView.findViewById(R.id.layer);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.text.setText(String.valueOf(position+1));
holder.remove.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("position remove: "+ position+1);
main.removeItem(position+1);
}
});
if(position+1>main.items.size()-1)
{
holder.row.setBackgroundResource(R.drawable.layer_unselected);
holder.text.setTextColor(Color.WHITE);
}
pos = position+1;
holder.row.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
main.selectItem(position+1);
holder.row.setBackgroundResource(R.drawable.layer_selected);
holder.text.setTextColor(Color.BLACK);
}
});
return(convertView);
}
private View newView(int position, ViewGroup parent) {
return(main.getLayoutInflater().inflate(R.layout.layer_row, parent, false));
}
class ViewHolder {
ImageView remove, row;
TextView text;
RelativeLayout layer;
}
其中" row"是我的ImageView和"文字"是一个以imageview为中心的文本。
答案 0 :(得分:0)
最有可能的最新项目将添加到您的方案中的最后一项。
因此,您可以获取一个变量,该变量采用listview的长度(项目数)并使用
进行检查if(position+1>numberOfItems)
{
holder.row.setBackgroundResource(R.drawable.layer_unselected);
holder.text.setTextColor(Color.WHITE);
}
并记得在添加新项目时致电NotifyDataSetChanged()
。