谷歌android官方GridView教程
目前我正在看 我在onCreate()、onResume和getView()中创建了带有其他日志的测试项目: HelloGridViewActivity.java谷歌android官方GridView教程,android,gridview,baseadapter,Android,Gridview,Baseadapter,目前我正在看 我在onCreate()、onResume和getView()中创建了带有其他日志的测试项目: HelloGridViewActivity.java package com.hello.namespace; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterVie
package com.hello.namespace;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.Toast;
public class HelloGridViewActivity extends Activity {
private static final String TAG = "HelloGridViewActivity";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Toast.makeText(HelloGridViewActivity.this, "" + position, Toast.LENGTH_SHORT).show();
}
});
Log.e(TAG, "onCreate()");
}
protected void onResume() {
super.onResume();
Log.e(TAG, "onResume()");
}
}
日志输出:
05-23 08:59:13.541: E/HelloGridViewActivity(733): onCreate()
05-23 08:59:13.551: E/HelloGridViewActivity(733): onResume()
05-23 08:59:13.711: E/ImageAdapter(733): position = 0
05-23 08:59:14.380: E/ImageAdapter(733): position = 1
05-23 08:59:15.190: E/ImageAdapter(733): position = 2
05-23 08:59:15.771: E/ImageAdapter(733): position = 3
05-23 08:59:16.340: E/ImageAdapter(733): position = 4
05-23 08:59:17.141: E/ImageAdapter(733): position = 5
05-23 08:59:17.721: E/ImageAdapter(733): position = 6
05-23 08:59:18.330: E/ImageAdapter(733): position = 7
05-23 08:59:18.611: E/ImageAdapter(733): position = 8
05-23 08:59:18.631: E/ImageAdapter(733): position = 9
05-23 08:59:18.631: E/ImageAdapter(733): position = 10
05-23 08:59:18.651: E/ImageAdapter(733): position = 11
05-23 08:59:18.651: E/ImageAdapter(733): position = 12
05-23 08:59:18.671: E/ImageAdapter(733): position = 13
05-23 08:59:18.681: E/ImageAdapter(733): position = 14
05-23 08:59:18.691: E/ImageAdapter(733): position = 15
05-23 08:59:18.701: E/ImageAdapter(733): position = 16
05-23 08:59:18.721: E/ImageAdapter(733): position = 17
05-23 08:59:18.721: E/ImageAdapter(733): position = 18
05-23 08:59:18.741: E/ImageAdapter(733): position = 19
05-23 08:59:18.741: E/ImageAdapter(733): position = 20
05-23 08:59:18.891: E/ImageAdapter(733): position = 0
这里有两个问题:
对不起,我的英语不好。1:我假设您在列表中滚动以获取此日志(因为只有当视图可见时才会调用getView),因此很可能您只是再次向上滚动,位置0处的视图是从上到下滚动的,并且再次从上到下滚动
2:取决于您希望在
onCreate
或onResume
中查看视图的原因。如果没有其他解决方案,并且您必须拥有它们,那么您只需在onCreate
中自己创建所有视图,将它们保存在列表中,然后在getView中返回即可。我会尽量避免这种情况,因为ListView仅在存在可见视图时才恢复视图并重用它们。在我描述的实现中,您将失去此功能,因此请告诉我们,为什么要在getView
1之前将其包含在其中。我并没有滚动,但最后一个图像是不可见的(它在屏幕的下边框下方)。这有关系吗?2.我想在应用程序启动时为第一行中的图像添加彩色边框。很抱歉,我没有看到,只有当convertView==null时才能登录。这使得我的第一个假设不可能。我不知道,为什么这个被多次调用,对我来说没有任何意义。对于您的第二个问题:我会在getView()
中创建彩色边框,并检查您是否在第一行中。。。
05-23 08:59:13.541: E/HelloGridViewActivity(733): onCreate()
05-23 08:59:13.551: E/HelloGridViewActivity(733): onResume()
05-23 08:59:13.711: E/ImageAdapter(733): position = 0
05-23 08:59:14.380: E/ImageAdapter(733): position = 1
05-23 08:59:15.190: E/ImageAdapter(733): position = 2
05-23 08:59:15.771: E/ImageAdapter(733): position = 3
05-23 08:59:16.340: E/ImageAdapter(733): position = 4
05-23 08:59:17.141: E/ImageAdapter(733): position = 5
05-23 08:59:17.721: E/ImageAdapter(733): position = 6
05-23 08:59:18.330: E/ImageAdapter(733): position = 7
05-23 08:59:18.611: E/ImageAdapter(733): position = 8
05-23 08:59:18.631: E/ImageAdapter(733): position = 9
05-23 08:59:18.631: E/ImageAdapter(733): position = 10
05-23 08:59:18.651: E/ImageAdapter(733): position = 11
05-23 08:59:18.651: E/ImageAdapter(733): position = 12
05-23 08:59:18.671: E/ImageAdapter(733): position = 13
05-23 08:59:18.681: E/ImageAdapter(733): position = 14
05-23 08:59:18.691: E/ImageAdapter(733): position = 15
05-23 08:59:18.701: E/ImageAdapter(733): position = 16
05-23 08:59:18.721: E/ImageAdapter(733): position = 17
05-23 08:59:18.721: E/ImageAdapter(733): position = 18
05-23 08:59:18.741: E/ImageAdapter(733): position = 19
05-23 08:59:18.741: E/ImageAdapter(733): position = 20
05-23 08:59:18.891: E/ImageAdapter(733): position = 0