2011-11-07 84 views
0

我在我的應用程序中放置了一個gridview,並且顯示信息。正如你可以看到我對每平方米的索引號的頂部,開始爲0。當我滾動我的屏幕,我的號碼開始17後改變指數再次啓動0和倒退在GridView中顯示項目的問題

http://img202.imageshack.us/img202/8108/39248258.png

這裏是我的代碼:

(的onCreate功能)

myGrid = (GridView)findViewById(R.id.grid); 
myGrid.setAdapter(new ImageAdapter(this)); 

我BaseAdpater:

public class ImageAdapter extends BaseAdapter 
{ 
    Context MyContext; 

    public ImageAdapter(Context _MyContext) 
    { 
     MyContext = _MyContext; 
    } 

    @Override 
    public int getCount() 
    { 
        /* Set the number of element we want on the grid */ 
     return searchResult.size(); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) 
    { 
     View MyView = convertView; 

     if (convertView == null) 
     { 

     /*we define the view that will display on the grid*/ 

     //Inflate the layout 
     LayoutInflater li = getLayoutInflater(); 
     MyView = li.inflate(R.layout.item, null); 

     String[] myData = searchResult.get(position); 

     // Add The Text!!! 
     TextView tv = (TextView)MyView.findViewById(R.id.no); 
     tv.setText(" "+ position); 

     TextView ap = (TextView)MyView.findViewById(R.id.apperture); 
     ap.setText(" "+ myData[1]); 

     TextView sp = (TextView)MyView.findViewById(R.id.speed); 
     sp.setText(" "+ myData[2]); 
     } 

     return MyView; 
    } 

    @Override 
    public Object getItem(int arg0) { 
     // TODO Auto-generated method stub 
     return arg0; 
    } 

    @Override 
    public long getItemId(int arg0) { 
     // TODO Auto-generated method stub 
     return arg0; 
    } 
} 

而且item.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_height="wrap_content" android:layout_width="wrap_content"> 
    <LinearLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="wrap_content"> 
     <TextView android:id="@+id/no" android:text="1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall"></TextView> 
    </LinearLayout> 
    <TextView android:text="TextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" android:id="@+id/apperture"></TextView> 
    <TextView android:id="@+id/speed" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView"></TextView> 

</LinearLayout> 

你見過這個問題?當我改變AVD(以不同的分辨率)時,問題開始於不同的索引號 感謝您的幫助

回答

0

我認爲你的問題是在getView。當你檢查(convertView == NULL),就無法正確reinflate非空的觀點,但你不能爲它提供任何新的內容

移動

String[] myData = searchResult.get(position); 

// Add The Text!!! 
TextView tv = (TextView)MyView.findViewById(R.id.no); 
tv.setText(" "+ position); 

TextView ap = (TextView)MyView.findViewById(R.id.apperture); 
ap.setText(" "+ myData[1]); 

TextView sp = (TextView)MyView.findViewById(R.id.speed); 
sp.setText(" "+ myData[2]); 

你的if語句之外。

+0

謝謝!我不知道如何運作的reinflate視圖! – jukx

+0

Listview可以回收項目視圖,這樣就不會不必要地執行從XML重新注入的昂貴操作。當列表項脫離屏幕時,其視圖可以作爲convertView傳遞到Adapter.getView中,以供重用。正如你現在所知道的那樣,無論如何你都需要提供新的價值,否則事情會變得有點怪異。 –

0

在您的getView方法中,如果convertView爲null,則只更新textView的值。 Android會通過convertView參數將舊視圖傳遞給getView,以便讓您更高效(重複使用已膨脹的視圖,而不是每次都創建一個新視圖)。

相關問題