簡體   English   中英

ListView添加項目

[英]ListView adding items

好吧,首先,我大約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; };
}

我可以在我的列表視圖中添加字符串數組。 但是我如何在列表視圖的同一行中添加2個不同的值(可以這么說)-在Java中。 請告訴我您是否不理解我的問題-我會盡力盡力而為

這是我的代碼:

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);

我可以通過標簽名稱啟動應用程序嗎?

您需要為行定義自己的布局(可以容納任意數量的元素),然后在適配器中覆蓋getView() ,對布局進行充氣,並在listview要求時返回它。 這使您能夠使每一行看起來像您想要的那樣,或使每一行根據數據類型而有所不同(這完全取決於您的getView()返回的內容-列表視圖將僅顯示適配器重新調整的內容)。 我在這里沒有提供任何代碼,因為從字面上看,任何Android ListView教程都會為您提供,因為這是非常基礎的。

隨機發現的教程: 此處此處

您的ArrayAdapter在您給它的布局中顯示AppItem.toString()的內容。

您可以重寫toString()以顯示標簽:

public void toString() {
    return _appName;
}

在onItemClick中,您可以通過調用

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

或者,鑒於appItem是可訪問的(活動的最終值或字段,而不是方法的局部變量)

apps.get(position);

然后,您可以獲取包並調用活動:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM