带滚动的Android Listview适配器

带滚动的Android Listview适配器,android,listview,Android,Listview,我有一个listview适配器,如下所示: public class ListViewAdapter extends BaseAdapter { // Declare Variables private Context mContext; private LayoutInflater inflater; private ArrayList<ApplicationPojo> applicationList = null; private Act

我有一个listview适配器,如下所示:

public class ListViewAdapter extends BaseAdapter {

    // Declare Variables
    private Context mContext;
    private LayoutInflater inflater;
    private ArrayList<ApplicationPojo> applicationList = null;
    private Activity activity;
    private Bitmap logoImg;
    private ViewHolder holder;
    private String logoName;
    //private String fileName;
    private PackageManager pm;
    private boolean isAppInstalled;


    public ListViewAdapter(Context context, ArrayList<ApplicationPojo> applicationList) {
        this.mContext = context;
        this.activity = (Activity)mContext;
        this.applicationList = applicationList;
        this.inflater = LayoutInflater.from(mContext);
    }

    @Override
    public int getCount() {
        return applicationList.size();
    }

    @Override
    public ApplicationPojo getItem(int position) {
        return applicationList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    public View getView(final int position, View view, ViewGroup parent)
    {

        if (view == null)
        {

            holder = new ViewHolder();
            view = inflater.inflate(R.layout.singleapp, null);

            holder.appName = (TextView) view.findViewById(R.id.appName);
            holder.developer = (TextView) view.findViewById(R.id.developer);
            holder.rate = (TextView) view.findViewById(R.id.rateApp);
            holder.updateBtn = (ImageView) view.findViewById(R.id.updateApp);
            holder.installBtn = (ImageView) view.findViewById(R.id.install);
            holder.openInstalledApp = (ImageView) view.findViewById(R.id.openInstalledApp);

            view.setTag(holder);
        }
        else
        {
            holder = (ViewHolder) view.getTag();
        }

        try
        {
            final View finalView = view;

            holder.logo = (ImageView) finalView.findViewById(R.id.appLogo);
            logoName = applicationList.get(position).getLogo();

            Picasso.with(activity)
                    .load(IPClass.SERVERIP + logoName)
                    .into(holder.logo);


            if(!appInstalled(applicationList.get(position).getFileName().substring(0, applicationList.get(position).getFileName().length() - 4)))
            {
                if(new File(Environment.getExternalStorageDirectory() + "/download/appsaraai/" + applicationList.get(position).getFileName()).exists())
                {

                    holder.installBtn.setVisibility(View.VISIBLE);
                    holder.installBtn.setOnClickListener(new View.OnClickListener()
                    {
                        @Override
                        public void onClick(View v) {
                            Intent intent = new Intent(Intent.ACTION_VIEW);
                            intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/download/appsaraai/" + applicationList.get(position).getFileName())), "application/vnd.android.package-archive");
                            activity.startActivity(intent);

                            for (int i = 0; i < DownloadLists.list.size(); i++) {

                                if (DownloadLists.list.get(i).getName().equals(applicationList.get(position).getName()));
                                {
                                    DownloadLists.list.remove(i);
                                }
                            }
                        }
                    });
                }

                else
                {
                    holder.updateBtn.setVisibility(view.VISIBLE);
                    holder.updateBtn.setOnClickListener(new View.OnClickListener()
                    {
                        @Override
                        public void onClick(View arg0)
                        {
                            String id = applicationList.get(position).getId();
                            int category = applicationList.get(position).getCategory();

                            Intent rec1Intent = new Intent(activity,AppView.class);
                            activity.startActivity(rec1Intent);

                            AppView appView = new AppView();
                            appView.setParameters(id,category);
                        }
                    });
                }
            }

            else
            {
                holder.updateBtn.setVisibility(View.GONE);
                holder.openInstalledApp.setVisibility(View.VISIBLE);
                holder.openInstalledApp.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Context ctx = mContext;
                        Intent mIntent = ctx.getPackageManager().getLaunchIntentForPackage(applicationList.get(position).getFileName());
                        String mainActivity = mIntent.getComponent().getClassName();
                        Intent intent = new Intent("android.intent.category.LAUNCHER");
                        intent.setClassName(applicationList.get(position).getFileName(), mainActivity);
                        activity.startActivity(intent);
                    }
                });
            }

            holder.appName.setText(applicationList.get(position).getName());
            holder.developer.setText(applicationList.get(position).getDeveloper());

        }
        catch (Exception ex)
        {
            Log.d("Adapter Exception", ex.toString());
        }
        return view;
    }

    public boolean appInstalled(String checkApp)
    {
        pm = activity.getPackageManager();

        try
        {
            pm.getPackageInfo(checkApp, PackageManager.GET_ACTIVITIES);
            isAppInstalled = true;
        }
        catch (PackageManager.NameNotFoundException e)
        {
            isAppInstalled = false;
        }

        return isAppInstalled;
    }

    public class ViewHolder
    {
        ImageView logo;
        TextView appName;
        TextView developer;
        TextView rate;
        ImageView updateBtn;
        ImageView installBtn;
        ImageView openInstalledApp;

    }

}
公共类ListViewAdapter扩展了BaseAdapter{
//声明变量
私有上下文;
私人充气机;
private ArrayList applicationList=null;
私人活动;
私有位图登录;
私人持票人;
私有字符串标识名;
//私有字符串文件名;
私人包装经理;
私有布尔运算;
公共ListViewAdapter(上下文上下文,ArrayList应用程序列表){
this.mContext=上下文;
this.activity=(activity)mContext;
this.applicationList=应用程序列表;
this.inflater=layoutiner.from(mContext);
}
@凌驾
public int getCount(){
返回applicationList.size();
}
@凌驾
公共应用程序POJO getItem(int位置){
返回applicationList.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
公共视图getView(最终整数位置、视图视图、视图组父视图)
{
如果(视图==null)
{
holder=新的ViewHolder();
视图=充气机。充气(R.layout.singleapp,null);
holder.appName=(TextView)view.findViewById(R.id.appName);
holder.developer=(TextView)view.findViewById(R.id.developer);
holder.rate=(TextView)view.findViewById(R.id.rateApp);
holder.updateBtn=(ImageView)view.findViewById(R.id.updateApp);
holder.installBtn=(ImageView)view.findViewById(R.id.install);
holder.openInstalledApp=(ImageView)view.findViewById(R.id.openInstalledApp);
视图.设置标签(支架);
}
其他的
{
holder=(ViewHolder)view.getTag();
}
尝试
{
最终视图finalView=视图;
holder.logo=(ImageView)finalView.findViewById(R.id.appLogo);
logonName=applicationList.get(位置).getLogo();
毕加索。与(活动)
.load(IPClass.SERVERIP+LogonName)
.插入(支架.徽标);
如果(!appInstalled(applicationList.get(position).getFileName().substring(0,applicationList.get(position).getFileName().length()-4)))
{
如果(新文件(Environment.getExternalStorageDirectory()+”/download/appsaraai/“+applicationList.get(position.getFileName()).exists())
{
holder.installBtn.setVisibility(视图可见);
holder.installBtn.setOnClickListener(新视图.OnClickListener()
{
@凌驾
公共void onClick(视图v){
意向意向=新意向(意向.行动\视图);
intent.setDataAndType(Uri.fromFile(新文件(Environment.getExternalStorageDirectory()+“/download/appsarai/”+applicationList.get(position.getFileName()),“application/vnd.android.package archive”);
活动。开始触觉(意图);
对于(int i=0;ipublic class ListViewAdapter extends BaseAdapter {

// Declare Variables
private Context mContext;
private LayoutInflater inflater;
private ArrayList<ApplicationPojo> applicationList = null;
private Activity activity;
private Bitmap logoImg;
private ViewHolder holder;
private String logoName;
//private String fileName;
private PackageManager pm;
private boolean isAppInstalled;


public ListViewAdapter(Context context, ArrayList<ApplicationPojo> applicationList) {
    this.mContext = context;
    this.activity = (Activity)mContext;
    this.applicationList = applicationList;
    this.inflater = LayoutInflater.from(mContext);
}

@Override
public int getCount() {
    return applicationList.size();
}

@Override
public ApplicationPojo getItem(int position) {
    return applicationList.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

public View getView(final int position, View view, ViewGroup parent)
{

    if (view == null)
    {

        holder = new ViewHolder();
        view = inflater.inflate(R.layout.singleapp, null);

        holder.appName = (TextView) view.findViewById(R.id.appName);
        holder.developer = (TextView) view.findViewById(R.id.developer);
        holder.rate = (TextView) view.findViewById(R.id.rateApp);
        holder.updateBtn = (ImageView) view.findViewById(R.id.updateApp);
        holder.installBtn = (ImageView) view.findViewById(R.id.install);
        holder.openInstalledApp = (ImageView) view.findViewById(R.id.openInstalledApp);

        view.setTag(holder);
    }
    else
    {
        holder = (ViewHolder) view.getTag();
    }

    try
    {
        final View finalView = view;

        holder.logo = (ImageView) finalView.findViewById(R.id.appLogo);
        logoName = applicationList.get(position).getLogo();

        Picasso.with(activity)
                .load(IPClass.SERVERIP + logoName)
                .into(holder.logo);


        if(!appInstalled(applicationList.get(position).getFileName().substring(0, applicationList.get(position).getFileName().length() - 4)))
        {
            //----------My code -----------
            //If app not installed holder.openInstalledApp
            //must be not visible

            holder.openInstalledApp.setVisibility(View.GONE);
            //---------------------

            if(new File(Environment.getExternalStorageDirectory() + "/download/appsaraai/" + applicationList.get(position).getFileName()).exists())
            {

                //----------My code -----------
                //If app not must be installed (not updated)
                //holder.updateBtn must be not visible
                holder.updateBtn.setVisibility(View.GONE);
                //---------------------

                holder.installBtn.setVisibility(View.VISIBLE);
                holder.installBtn.setOnClickListener(new View.OnClickListener()
                {
                    @Override
                    public void onClick(View v) {
                        Intent intent = new Intent(Intent.ACTION_VIEW);
                        intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/download/appsaraai/" + applicationList.get(position).getFileName())), "application/vnd.android.package-archive");
                        activity.startActivity(intent);

                        for (int i = 0; i < DownloadLists.list.size(); i++) {

                            if (DownloadLists.list.get(i).getName().equals(applicationList.get(position).getName()));
                            {
                                DownloadLists.list.remove(i);
                            }
                        }
                    }
                });
            }

            else
            {

                //----------My code -----------
                //If app not must be updated
                //holder.updateBtn must be not visible

                holder.installBtn.setVisibility(View.GONE);
                //---------- ----------

                holder.updateBtn.setVisibility(view.VISIBLE);
                holder.updateBtn.setOnClickListener(new View.OnClickListener()
                {
                    @Override
                    public void onClick(View arg0)
                    {
                        String id = applicationList.get(position).getId();
                        int category = applicationList.get(position).getCategory();

                        Intent rec1Intent = new Intent(activity,AppView.class);
                        activity.startActivity(rec1Intent);

                        AppView appView = new AppView();
                        appView.setParameters(id,category);
                    }
                });
            }
        }

        else
        {

            //----------My code -----------
            //If app installed and updated
            //buttons what no needed must be not visible

            holder.installBtn.setVisibility(View.GONE);
            holder.updateBtn.setVisibility(View.GONE);
            //---------------------

            holder.openInstalledApp.setVisibility(View.VISIBLE);
            holder.openInstalledApp.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Context ctx = mContext;
                    Intent mIntent = ctx.getPackageManager().getLaunchIntentForPackage(applicationList.get(position).getFileName());
                    String mainActivity = mIntent.getComponent().getClassName();
                    Intent intent = new Intent("android.intent.category.LAUNCHER");
                    intent.setClassName(applicationList.get(position).getFileName(), mainActivity);
                    activity.startActivity(intent);
                }
            });
        }

        holder.appName.setText(applicationList.get(position).getName());
        holder.developer.setText(applicationList.get(position).getDeveloper());

    }
    catch (Exception ex)
    {
        Log.d("Adapter Exception", ex.toString());
    }
    return view;
}

public boolean appInstalled(String checkApp)
{
    pm = activity.getPackageManager();

    try
    {
        pm.getPackageInfo(checkApp, PackageManager.GET_ACTIVITIES);
        isAppInstalled = true;
    }
    catch (PackageManager.NameNotFoundException e)
    {
        isAppInstalled = false;
    }

    return isAppInstalled;
}

public class ViewHolder
{
    ImageView logo;
    TextView appName;
    TextView developer;
    TextView rate;
    ImageView updateBtn;
    ImageView installBtn;
    ImageView openInstalledApp;

}

}