0

リストビューに追加された新しい行を一意の背景画像で識別したいのですが、古いレコードがデフォルトの背景になります。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であり、「テキスト」は画像ビューを中心としたテキストです。

4

1 に答える 1

0

おそらく、シナリオの最後に最新のアイテムが追加されます。

したがって、リストビューの長さ(アイテムの数)をとる変数を取得して、次のように確認できます。

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

NotifyDataSetChanged()新しいアイテムが追加されたら、忘れずに電話してください。

于 2013-02-21T07:32:31.657 に答える