我在我的应用程序中放了一个gridview,然后显示信息。你可以看到我在每个方格的顶部有索引号,从0开始。当我滚动屏幕时,我的数字在17之后开始改变。索引再次开始0并向后移动
http://img202.imageshack.us/img202/8108/39248258.png
这是我的代码:
(onCreate功能)
myGrid = (GridView)findViewById(R.id.grid);
myGrid.setAdapter(new ImageAdapter(this));
My 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 :(得分:0)
在getView
方法中,如果convertView为null,则只更新textViews的值。 Android会通过convertView参数将旧视图传递给getView,以便您更高效(重新使用已经膨胀的视图,而不是每次都创建一个新视图)。
答案 1 :(得分:0)
我认为您的问题出在getView中。当你检查是否(convertView == 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] );
在你的if语句之外。