带滚动的Android Listview适配器
我有一个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
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;
}
}