java - ListView 添加项目

标签 java android android-listview

好吧,首先,我大约 2 天前开始(尝试)学习 Java。 我正在尝试创建一个列出所有已安装应用程序的应用程序(activityInfo.loadLabel) 我想在项目单击(activityInfo.packageName)时启动应用程序 我将这些存储在 AppItems 列表中

class AppItem{
    String _appname;
    public String getAppname(){return _appname;};
    public void setAppname(String value){_appname = value;};
    String _app;
    public String getApp(){ return _app; };
    public void setApp(String value){_app = value; };
}

我可以将字符串数组添加到我的 ListView 中。 但是我如何在Java中的 ListView 中将2个不同的值添加到同一行(可以这么说)。 如果您不明白我的问题,请告诉我 - 我会尽力详细说明

这是我的代码:

ArrayList<AppItem> apps;
    @Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
        mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        final List<ResolveInfo> pkgAppsList = getPackageManager().queryIntentActivities(mainIntent, 0);
        AppItem appItem = new AppItem();
        for (ResolveInfo applicationInfo : pkgAppsList) {
            appItem._appname = (String) applicationInfo.activityInfo.loadLabel(getPackageManager());
            appItem._app= applicationInfo.activityInfo.packageName;
            apps.add(appItem);
        }

        ArrayAdapter<AppItem> adapter = new ArrayAdapter<AppItem>(this,android.R.layout.simple_list_item_1,apps);

        ListView listView = new ListView(this);     
        listView.setAdapter(adapter);
         setContentView(listView);

         listView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position,
                    long id) {
                String item = ((TextView)view).getText().toString();            
                Toast.makeText(getBaseContext(), item, Toast.LENGTH_LONG).show();

            }
        });

    }
class AppItem{
    String _appname;
    public String getAppname(){return _appname;};
    public void setAppname(String value){_appname = value;};
    String _app;
    public String getApp(){ return _app; };
    public void setApp(String value){_app = value; };
}

或者 有没有其他方法可以使用

Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("com.package.address");
startActivity(LaunchIntent);

我可以通过应用程序的标签名称启动应用程序吗?

最佳答案

您的 ArrayAdapter 在您指定的布局中显示 AppItem.toString() 的内容。

您可以重写 toString() 以显示标签:

public void toString() {
    return _appName;
}

在onItemClick中,可以通过调用来获取item

AppItem item = (AppItem) parent.getItemAtPosition(position);

或者,假设 appItem 是可访问的(final 或 Activity 的字段,而不是方法的局部变量)

apps.get(position);

然后您可以获取该包并调用该 Activity :

Intent intent = getPackageManager().getLaunchIntentForPackage(item.getAapp());

关于java - ListView 添加项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14337833/

相关文章:

android - 在移动到另一个 Activity 之前需要 editText 字段

android - 使用游标适配器实现具有多个选择和过滤器的 ListView

android - 在 ListView 适配器中使用 View 持有者时出现空指针异常

Android Wear - 如何为 WearableListView 设置分隔空间

java - AndEngine - 一般 2D 横向卷轴问题

java - 如何从java中另一个类的主类访问int?

java - 加入 ElementCollections 以查找至少一个匹配项

java - 在executeUpdate Java MySQL 中出现错误

java - 如何让选号器不可取消?

android - TextView.setVisibility(GONE) 不工作