2013-03-25 54 views
-1

我的列表視圖包含一個圖像和一些textview;有兩個包含價格和特殊價格的textiview,如果特價是0而不是隻設置價格textview和特殊價格讓它爲null,但是特價比特價價格> 0以及特價,最短時間一切都很順利但是,當我與dumyy值滾動列表視圖,然後空的TextView集enter code here滾動ListView填充虛擬值

這裏是我的getView方法的代碼。

@Override 
public  View  getView(final int position, View convertView, ViewGroup parent){ 
//public View getView(int position, View convertView, ViewGroup parent) { 
    /*View vi = convertView; 
    if (convertView == null) 
    { 
     vi = inflater.inflate(R.layout.list_row, null); 
    } 
    */ 
    int pos=position; 
    if (convertView == null) { 
     convertView = inflater.inflate(R.layout.list_row, null); 
     viewHolder=new ViewHolder(); 
     viewHolder.txt_id = (TextView) convertView.findViewById(R.id.id); // title 
     viewHolder.txt_product_name = (TextView) convertView.findViewById(R.id.title); // title 
     viewHolder.artist = (TextView) convertView.findViewById(R.id.artist); // artist 
                    // name 
     viewHolder.txt_mspecialprice_withouttax = (TextView) convertView.findViewById(R.id.duration); // duration 
     viewHolder.stock = (TextView) convertView.findViewById(R.id.stck); 
     viewHolder.txt_mprice_withouttax = (TextView) convertView.findViewById(R.id.txtmpricewithouttax); 

     viewHolder.thumb_image = (ImageView) convertView.findViewById(R.id.list_image); // thumb 
                       // image 


     convertView.setTag(viewHolder); 

    } 
    else{ 
     viewHolder = (ViewHolder) convertView.getTag(); 
    } 


    HashMap<String, String> song = new HashMap<String, String>(); 
    song = data.get(position); 

    // Setting all values in listview 
    String mspecialprice_str=song.get(CustomizedListView.KEY_PRODUCT_MSPECIAL_WITHOUT_TAX); 
    //String substr_mspecialprice_str=mspecialprice_str.substring(1,mspecialprice_str.indexOf(".")); 
    //String substr_mspecialprice_str_replaced=substr_mspecialprice_str.replace(",", ""); 

    String msaleprice_str=song.get(CustomizedListView.KEY_PRODUCT_MPRICE_WITHOUT_TAX); 
    //String substr_msaleprice_str=msaleprice_str.substring(0,msaleprice_str.indexOf(".")); 
    //String substr_msaleprice_str_replaced=substr_msaleprice_str.replace(",", ""); 

    viewHolder.txt_id.setText(song.get(CustomizedListView.KEY_PRODUCT_ID)); 
    viewHolder.txt_product_name.setText(song.get(CustomizedListView.KEY_PRODUCT_NAME)); 
    viewHolder.artist.setText(song.get(CustomizedListView.KEY_PRODUCT_DESCRIPTION)); 
    viewHolder.stock.setText(song.get(CustomizedListView.KEY_STOCK)); 
    if(mspecialprice_str.equals("0")) 
    { 
     //txt_mspecialprice_withouttax.setText(song.get(CustomizedListView.KEY_PRODUCT_MSPECIAL_WITHOUT_TAX)); 
     viewHolder.txt_mprice_withouttax.setText("$"+(song.get(CustomizedListView.KEY_PRODUCT_MPRICE_WITHOUT_TAX))); 

     viewHolder.txt_mprice_withouttax.setTextColor(Color.parseColor("#64aef9")); 

    } 
    //if(!(mspecialprice_str.equals("0"))) 
    //{ 
else 
{ 
    viewHolder.txt_mspecialprice_withouttax.setText("$"+(song.get(CustomizedListView.KEY_PRODUCT_MSPECIAL_WITHOUT_TAX))); 
    viewHolder.txt_mprice_withouttax.setText("$"+(song.get(CustomizedListView.KEY_PRODUCT_MPRICE_WITHOUT_TAX))); 
    viewHolder.txt_mprice_withouttax.setPaintFlags(viewHolder.txt_mprice_withouttax.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); 
    viewHolder.txt_mprice_withouttax.setTextColor(Color.parseColor("#F01616")); 
} 

    imageLoader.DisplayImage(
      song.get(CustomizedListView.KEY_PRODUCT_IMAGEURL), viewHolder.thumb_image); 

    return convertView; 
} 
} 

class ViewHolder { 
TextView txt_id ; // title 
TextView txt_product_name; // title 
TextView artist ; // artist 
                  // name 
TextView txt_mspecialprice_withouttax; // duration 
TextView stock ; 
TextView txt_mprice_withouttax; 

ImageView thumb_image ; // thumb 


} 
+0

如果你能告訴我們你爲什麼要這麼做?我相信你還面臨一些其他問題,你需要重新解釋你在這裏問的問題。 – Atrix1987 2013-03-25 10:55:48

+0

居然在這裏讓我詳細告訴你發生什麼,我的列表視圖包含一個圖像,而一些TextView的,有兩個textiview包含價格和特殊價格,如有特殊價格是0比只設定價格的TextView和特殊的價格讓它空,但特殊的價格是> 0比價格價格以及特殊的價格,Fisrt時間一切都很好,但當我滾動列表視圖然後空白textview設置與dumyy值。 – 2013-03-25 11:07:28

+1

請編輯什麼你剛剛在烏爾評論 – Atrix1987 2013-03-25 11:10:03

回答

1

ListView,GridView重用視圖用作列表項/網格元素。每當android嘗試在滾動視圖的同時繪製下一個元素時,都會調用getView()。沒有必要阻止!

編輯 - Atrix1987

從顯影劑docs

適配器對象充當一個AdapterView之間的橋樑,該視圖的底層數據。適配器提供對數據項的訪問。適配器還負責爲數據集中的每個項目製作視圖。

假如你有一個您想要使用的GridView/ListView和最大可見的項目爲5,則相同的5次可重複使用,當你滾動顯示5種元素的各地展示10個元素。這是預期的行爲,是做事情的正確方式[將視圖數量保持在最低限度]。

您不必對getView方法控制,該框架確實是給你的。

+0

感謝您的答覆中提到的問題,但我想執行getview方法只有一次加載後的數據到的ListView/GridView的話,我不想再次執行getview方法每次 – 2013-03-25 10:45:46

+0

我的列表視圖項位置發生了變化,所以我不想更改listview項目的位置 – 2013-03-25 10:48:10

+0

getView()在加載後未被調用 - 它在listview想要繪製某些內容時調用。 想象您的數據適配器中有100個元素,但listview一次只顯示10個元素 - 您將得到10個getView()調用。只有10個,因爲只需要10個來顯示listview。 這就是listview/gridview的工作原理。 – pelotasplus 2013-03-25 10:52:46

0

GridView部件延伸AdapterView。它使用適配器來允許重用視圖並提高性能。沒有辦法避免調用getView() - 這對於整個AdapterView想法是必不可少的。如果你想要一個靜態佈局,也許你應該使用別的東西。

+0

確定讓getview調用一次又一次,但我不想改變我的列表視圖的行位置,以及它的價值。請在這裏幫助我。 – 2013-03-25 10:53:36

+0

好的,你不太瞭解適配器的概念。仔細閱讀這件事,你會發現改變位置對於這個想法來說(重新)是必不可少的 - 每次調用getView都會返回指定位置上單個對象的視圖。它如何*不*改變? – Shade 2013-03-25 11:39:57

+0

終於我的問題解決了。 – 2013-03-25 11:55:09