有人可以解释以下代码的作用吗?
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View myView = null;
try {
myView = convertView;
if (null == myView) {
LayoutInflater li = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
myView = li.inflate(R.layout.demographic_list_item, null);
}
if (mScan_listItems[position] != null) {
// read the values and attach them.
TextView tv1 = (TextView) myView
.findViewById(R.id.DemoGraphicItem_Text);
tv1.setText(mScan_listItems[position]);
}
} catch (Exception e) {
e.printStackTrace();
}
return myView;
}
}
答案 0 :(得分:8)
Adapter.getView
文档给出了使用getView的一些指示:
public abstract View getView (int position, View convertView, ViewGroup parent)
获取一个视图,显示数据集中指定位置的数据。您可以手动创建View,也可以从XML布局文件中对其进行充气。当视图膨胀时,父视图(GridView,ListView ...)将应用默认布局参数,除非您使用inflate(int,android.view.ViewGroup,boolean)指定根视图并防止附加到根。
项目在我们想要的视图项目的适配器数据集中的位置。
如果可能的话,重用旧视图。注意:在使用之前,应检查此视图是否为非null且类型是否合适。如果无法转换此视图以显示正确的数据,则此方法可以创建新视图。
此视图最终将附加到
的父级与指定位置的数据对应的视图。
将为数据集中的每个项调用getView。来自Adapter API docs:
Adapter对象充当桥接器 在AdapterView和。之间 该视图的基础数据。该 适配器提供对数据的访问 项目。适配器也负责 为每个项目制作一个视图 数据集。
答案 1 :(得分:0)
通过实施Baseadapter
界面构建自定义视图。
它有两个重要方法:getcount()
和getview()
。
getcount()
方法返回适配器为listview
或gridview
提供的视图数。
getview()
方法将逐个提供视图。
其convertview
属性至关重要,因为它返回先前创建的视图。检查null
,如果它不为null,则为同一个位置使用相同的视图以提高效率,或者为新视图充气并将其返回给父视图。
答案 2 :(得分:-1)
package com.stampcollections;
import java.util.Vector;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.AdapterView.OnItemClickListener;
import com.database.DBAdapter;
import com.techvalens.servercommunication.WebServiceDetails;
public class GridViewFirst extends Activity implements OnItemClickListener,
WebServiceDetails
{
public static int position = 0;
GridView MyGrid;
DBAdapter dataBase = new DBAdapter(this);
Vector <String>vector2 = new Vector<String>();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gridfirst);
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
gridview.setOnItemClickListener(this);
}
public class ImageAdapter extends BaseAdapter {
private Context mContext;
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return mThumbIds.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some
attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setBackgroundResource(R.drawable.stampbackground);
imageView.setImageResource(mThumbIds[position]);
return imageView;
}
// references to our images
private Integer[] mThumbIds = {
R.drawable.ghandig,R.drawable.madhu,R.drawable.munshi,R.drawable.namdev,
R.drawable.otter,R.drawable.panda,R.drawable.rabindranath,R.drawable.rail,
R.drawable.rail1,R.drawable.raj,R.drawable.taj,R.drawable.tortoise
};
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// Intent intent = new Intent(GridViewFirst.this,TabActivity.)
switchTabInActivity(3);
position = arg2;
}
public void switchTabInActivity(int indexTabToSwitchTo){
TabActivity ParentActivity;
ParentActivity = (TabActivity) this.getParent();
ParentActivity.switchTab(indexTabToSwitchTo);
}
}