Android listview';s项重复

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

1.运行此应用程序时,在listview中显示包名和ico,但不正常。 这个项目是重复的。有人能帮我指出我的代码有什么问题吗

/**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,因此重复了列表。

老实说,你的答案不是正确的。无论如何,这是回答!