2013-02-21 63 views
0

我想识别在我的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; 
    } 

其中,“行”是我的ImageView和“文本”是集中在ImageView的文本。

+0

这个任务背后的原因是什么? – 2013-02-21 07:29:13

+0

我想在列表视图中的最后一行放置不同的图像背景 – Dimitri 2013-02-21 08:36:35

+0

做一个这将创建一个图像名称/路径/资源数组,并将它传递给你的适配器,并显示相应,因为你显示文字 – 2013-02-21 08:43:48

回答

0

最有可能最新的项目将被添加在您的方案的最后一个。

所以你可以把一个变量这需要列表视图的长度(项目数),并与

if(position+1>numberOfItems) 
{ 
    holder.row.setBackgroundResource(R.drawable.layer_unselected); 
    holder.text.setTextColor(Color.WHITE); 
} 

检查并记住调用NotifyDataSetChanged()当添加一个新的项目。

+0

我应该在哪里调用NotifyDataSetChanged()?这个代码应该在查看方法 – Dimitri 2013-02-21 08:14:48

+0

中使用,在你实现添加新项目的任何地方调用它在getView()中的适配器类中。假设你点击了列表中同一行的另一个按钮项目,那么你需要把它放在OnClick()这个按钮的引用里面。如果你不能这样做,那么向我展示如何添加一个新项目的代码。 – Nezam 2013-02-21 08:48:38

+0

但当我添加第二个项目的前一个背景图片不刷新 – Dimitri 2013-02-21 09:04:13

相关问题