Android listview';s项重复
1.运行此应用程序时,在listview中显示包名和ico,但不正常。 这个项目是重复的。有人能帮我指出我的代码有什么问题吗Android listview';s项重复,android,listview,Android,Listview,1.运行此应用程序时,在listview中显示包名和ico,但不正常。 这个项目是重复的。有人能帮我指出我的代码有什么问题吗 /**show the packageinfo.*/ public class MainForm extends Activity { PackageManager pm; ListView applist; List<PackageInfo> appInfo; ImageView itemImage; Text
/**show the packageinfo.*/
public class MainForm extends Activity {
PackageManager pm;
ListView applist;
List<PackageInfo> appInfo;
ImageView itemImage;
TextView appName;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
applist = (ListView) findViewById(R.id.applist);
pm = getPackageManager();
appInfo = (List<PackageInfo>) pm.getInstalledPackages(0);
applist.setAdapter(new MyAdapter());
}
private class MyAdapter extends BaseAdapter {
private LayoutInflater mInflater;
public MyAdapter() {
// TODO Auto-generated constructor stub
this.mInflater=LayoutInflater.from(MainForm.this);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = null;
if (convertView == null) {
LayoutInflater li =mInflater;
v = li.inflate(R.layout.layout_applist, null);
itemImage = (ImageView) v.findViewById(R.id.item_icon);//get the imageview
appName = (TextView)v.findViewById(R.id.packname);//get the textview
} else {
v = convertView;
}
itemImage.setBackgroundDrawable(((PackageInfo)getItem (position)).applicationInfo.loadIcon(pm));
appName.setText(((PackageInfo)getItem(position)).applicationInfo.loadLabel(pm).toString());
return v;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return appInfo.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return appInfo.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
}
}
/**显示packageinfo*/
公共类MainForm扩展活动{
包装经理;
列表视图应用程序列表;
列出appInfo;
图像查看项目图像;
TextView appName;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
applist=(ListView)findViewById(R.id.applist);
pm=getPackageManager();
appInfo=(列表)pm.getInstalledPackages(0);
setAdapter(新的MyAdapter());
}
私有类MyAdapter扩展了BaseAdapter{
私人停车场;
公共MyAdapter(){
//TODO自动生成的构造函数存根
this.mInflater=LayoutInflater.from(MainForm.this);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图v=null;
if(convertView==null){
LayoutInflater li=mInflater;
v=li.充气(R.layout.layout\u applist,空);
itemImage=(ImageView)v.findViewById(R.id.item_图标);//获取ImageView
appName=(TextView)v.findviewbyd(R.id.packname);//获取TextView
}否则{
v=转换视图;
}
itemImage.setBackgroundDrawable(((PackageInfo)getItem(position)).applicationInfo.loadIcon(pm));
appName.setText(((PackageInfo)getItem(position)).applicationInfo.loadLabel(pm.toString());
返回v;
}
@凌驾
public int getCount(){
//TODO自动生成的方法存根
返回appInfo.size();
}
@凌驾
公共对象getItem(int位置){
//TODO自动生成的方法存根
返回appInfo.get(位置);
}
@凌驾
公共长getItemId(int位置){
//TODO自动生成的方法存根
返回位置;
}
}
}
从我的头顶上看,你定义了两次v,然后返回了v,因此重复了列表。老实说,你的答案不是正确的。无论如何,这是回答!