【问题标题】:Display a ListView not in a new activity显示不在新活动中的 ListView
【发布时间】:2014-02-01 03:09:35
【问题描述】:

我正在使用 Xamarin,并且我有一个带有一些自定义视图的 ListView 活动。我也有地图活动。地图活动作为启动项目开始。地图活动启动后,我希望显示一个 ListView(当前在活动中)。

我的问题是:我是否需要启动一个新的活动来显示这个 ListView?我可以从我的地图活动中显示 ListView 吗?

提前致谢

【问题讨论】:

    标签: android listview android-listview android-activity xamarin


    【解决方案1】:

    您可以从当前 Activity 的内容视图中删除所有视图并在代码中创建您的 ListView,然后将其添加到您的内容视图中。或者您可以使用 switchView 来显示它。您还可以创建一个包含地图和列表的布局,首先将您的列表设置为不可见,然后将您的地图设置为不可见并更改列表可见。

    1-

    ViewGroup vg = (ViewGroup)(mapView.getParent());
    vg.removeView(mapView);
    
    //then create your listview and add it:
    ...
    vg.addView(myListView);
    

    2-如果您想更改可见性,请参阅Android : difference between invisible and gone?

    终于可以在android中搜索关于切换视图了,会很有用的。

    【讨论】:

    • 你能快速向我展示相关代码吗?或者给我看一个包含此过程示例代码的链接?
    • @Garry 请再次查看我的回答。
    【解决方案2】:

    您可以通过为AlertDialog 创建一个Custom Layout 来创建一个可以从当前Activity 启动的AlertDialog

    MainActivity.java

    package com.example.alertlist;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.app.AlertDialog.Builder;
    import android.view.LayoutInflater;
    import android.view.Menu;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    
    public class MainActivity extends Activity {
    
    AlertDialog al;
    ListView lv;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        AlertDialog.Builder b = new AlertDialog.Builder(this);
        LayoutInflater i = getLayoutInflater();
        b.setView(i.inflate(R.layout.alert_list, null));
        al = b.create();
        al.show();
        lv = (ListView) al.findViewById(R.id.listView1);
        String[] myStringArray = {"this", "is", "it"};
        ArrayAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myStringArray);
        lv.setAdapter(adapter);
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
    }
    

    alert_list.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>
    
    </LinearLayout>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-22
      相关资源
      最近更新 更多