Как отобразить все установленные приложения в виде сеткиAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как отобразить все установленные приложения в виде сетки

Сообщение Anonymous »

Как отобразить все установленные приложения в виде сетки.
Как отобразить список значков приложений в виде сетки.
MainActivity:

Код: Выделить всё

    import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
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.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

private List installedApps;
private AppAdapter installedAppAdapter;
ListView userInstalledApps;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

userInstalledApps = (ListView) findViewById(R.id.installed_app_list);

installedApps = getInstalledApps();
installedAppAdapter = new AppAdapter(MainActivity.this, installedApps);
userInstalledApps.setAdapter(installedAppAdapter);
userInstalledApps.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView adapterView, View view, final int i, long l) {

String[] colors = {" Open App", " App Info"};
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Choose Action")
.setItems(colors, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// The 'which' argument contains the index position of the selected item
if (which==0){
Intent intent = getPackageManager().getLaunchIntentForPackage(installedApps.get(i).packages);
if(intent != null){
startActivity(intent);
}
else {
Toast.makeText(MainActivity.this, installedApps.get(i).packages + " Error, Please Try Again...", Toast.LENGTH_SHORT).show();
}
}
if (which==1){
Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setData(Uri.parse("package:" + installedApps.get(i).packages));
Toast.makeText(MainActivity.this, installedApps.get(i).packages, Toast.LENGTH_SHORT).show();
startActivity(intent);
}
}
});
builder.show();

}
});

//Total Number of Installed-Apps(i.e.  List Size)
String  abc = userInstalledApps.getCount()+"";
TextView countApps = (TextView)findViewById(R.id.countApps);
countApps.setText("Total Installed Apps: "+abc);
Toast.makeText(this, abc+" Apps", Toast.LENGTH_SHORT).show();

}

private List getInstalledApps() {
PackageManager pm = getPackageManager();
List apps = new ArrayList();
List
 packs = getPackageManager().getInstalledPackages(0);
//List packs = getPackageManager().getInstalledPackages(PackageManager.GET_PERMISSIONS);
for (int i = 0; i < packs.size(); i++) {
PackageInfo p = packs.get(i);
if ((!isSystemPackage(p))) {
String appName = p.applicationInfo.loadLabel(getPackageManager()).toString();
Drawable icon = p.applicationInfo.loadIcon(getPackageManager());
String packages = p.applicationInfo.packageName;
apps.add(new AppList(appName, icon, packages));
}
}
return apps;
}

private boolean isSystemPackage(PackageInfo pkgInfo) {
return (pkgInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
}

public class AppAdapter extends BaseAdapter {

public LayoutInflater layoutInflater;
public List listStorage;

public AppAdapter(Context context, List  customizedListView) {
layoutInflater =(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
listStorage = customizedListView;
}

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

@Override
public Object getItem(int position) {
return position;
}

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder listViewHolder;
if(convertView == null){
listViewHolder = new ViewHolder();
convertView = layoutInflater.inflate(R.layout.installed_app_list, parent, false);

listViewHolder.textInListView = (TextView)convertView.findViewById(R.id.list_app_name);
listViewHolder.imageInListView = (ImageView)convertView.findViewById(R.id.app_icon);
listViewHolder.packageInListView=(TextView)convertView.findViewById(R.id.app_package);
listViewHolder.GridView = (GridView)convertView.findViewById(R.id.gridview);

convertView.setTag(listViewHolder);
}else{
listViewHolder = (ViewHolder)convertView.getTag();
}
listViewHolder.textInListView.setText(listStorage.get(position).getName());
listViewHolder.imageInListView.setImageDrawable(listStorage.get(position).getIcon());
listViewHolder.packageInListView.setText(listStorage.get(position).getPackages());
//           listViewHolder.GridView.setAdapter((ListAdapter) listStorage.get(position).getIcon());

return convertView;
}

class ViewHolder{
public GridView GridView;
TextView textInListView;
ImageView imageInListView;
TextView packageInListView;

}
}

public class AppList {
private String name;
Drawable icon;
private String packages;
public AppList(String name, Drawable icon, String packages) {
this.name = name;
this.icon = icon;
this.packages = packages;
}
public String getName() {
return name;
}
public Drawable getIcon() {
return icon;
}
public String getPackages() {
return packages;
}

}
}
activity_main.xml: installed_app_list.xml: Можете ли вы дать мне исходный код простого представления в виде сетки?
Я хочу, чтобы все установленные приложения отображались в виде сетки
Спасибо. ..............................................

Подробнее здесь: https://stackoverflow.com/questions/756 ... -grid-view
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»