在列表视图中正确显示图像

时间:2013-12-18 13:31:51

标签: android listview imageview

我有一个listview显示自定义行布局显示Textview和2 EditTexts。 我在textview背景中显示图像,文本在它上面。 在getView方法中,我异步加载图像并显示在列表视图中。 listview是否不为不可见的行调用getview方法。

当我滚动时,textview包含不同的图像,当它变得有些可见时获取实际图像。为什么会出现这种行为。因为我没有得到它,所以请更新。

 public View getView(int arg0, View arg1, ViewGroup arg2) {
            // TODO Auto-generated method stub

            View v=arg1;

        EditText t1,t2;

            final TextView tv;
                       if (arg1 == null) 
               {  // if it's not recycled, initialize some attributes
                   LayoutInflater lf=(LayoutInflater)conn.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                   v=lf.inflate(R.layout.layitem,arg2,false);

               }

                   tv = (TextView)v.findViewById(R.id.textView1);
                   LinearLayout.LayoutParams ll=new LinearLayout.LayoutParams(width,width/2); // setting width to same as that of mobile screen
                   ll.setMargins(10, 0, 10, 0);

                    tv.setLayoutParams(ll);
                   // tv.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL);


                    t1=(EditText)v.findViewById(R.id.editText1);
                    t2=(EditText)v.findViewById(R.id.editText2);

    // here count is actual no of rows that have image loaded from server rest will have default background    



               if(arg0<count)
               {
   Bitmap object=loadimage(iurl[arg0]);
          tv.setBackground(new BitmapDrawable(conn.getResources(),object));


              tv.setText(texts[arg0]);
              t1.setText(prays[arg0]);
             }
             else
             {
              tv.setBackgroundResource(R.drawable.wish);
              tv.setText("");
              t1.setText("0");
             }






               return v;
        }

1 个答案:

答案 0 :(得分:0)

ListView会在可见或可见时调用getView。而且在getView中,传递的参数convertView实际上是缓存视图(或null)。它可能是您之前创建的视图之一,因此它可能包含一些当前不可见的旧图像。