Android 单活动与多活动

Android 单活动与多活动,android,android-activity,Android,Android Activity,我正在开发一个应用程序,它有一个主活动,并且有许多医院、诊所的图像视图。。。当按下其中一个按钮时,您将进入一个新的activity DisplayActivity,该activity将加载预填充的ListView。为每项活动单独安排一项活动似乎不合逻辑 我的问题是,我是否可以使用一个活动来加载不同的列表视图,具体取决于选择了哪个活动。我知道这可以通过XML来完成,在DisplayActivity中添加所有ListView并使它们可见/消失,但我需要一种更动态的方式,例如根据MainActivit

我正在开发一个应用程序,它有一个主活动,并且有许多医院、诊所的图像视图。。。当按下其中一个按钮时,您将进入一个新的activity DisplayActivity,该activity将加载预填充的ListView。为每项活动单独安排一项活动似乎不合逻辑

我的问题是,我是否可以使用一个活动来加载不同的列表视图,具体取决于选择了哪个活动。我知道这可以通过XML来完成,在DisplayActivity中添加所有ListView并使它们可见/消失,但我需要一种更动态的方式,例如根据MainActivity中选择的项目加载所需的ListView

这是我的显示活动当前的样子:

public class DisplayActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_display);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        //Display list of hospitals
        String[] doctors = getResources().getStringArray(R.array.hospitalList);         // Get array List ID
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, doctors);
        ListView lv = (ListView) findViewById(R.id.hospitalListView);
        lv.setAdapter(adapter);
    }
}
公共类DisplayActivity扩展了AppCompative活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_显示);
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
设置支持操作栏(工具栏);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//显示医院名单
String[]doctors=getResources().getStringArray(R.array.hospitalList);//获取数组列表ID
ArrayAdapter=新的ArrayAdapter(这个,android.R.layout.simple_list_item_1,android.R.id.text1,医生);
ListView lv=(ListView)findViewById(R.id.hospitalListView);
低压设置适配器(适配器);
}
}

只需定义一个便利功能:

void setListViewContent(@ArrayRes int arrayId) { 
       String[] items = getResources().getStringArray(arrayId);         // Get array List ID
       ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, items);
       ListView lv = (ListView) findViewById(R.id.hospitalListView);
       lv.setAdapter(adapter);
}

使用片段代替你完全可以用不同的适配器填充相同的
ListView
,每个适配器都提供任意数据。当您更改“ListView”适配器时,显示的数据将相应地更改,只需根据selectionfragments替换fragment或根据各种因素切换适配器即可。虽然我也不会放弃多个活动的想法,但片段有时可能是一种痛苦,有时最简单的方法是最好的。我是将此函数定义为main活动还是Display活动?在
ListView
R.id.hospitalListView
所在的活动上。该函数只是用您选择的数组填充
列表视图。
setListViewContent(R.array.doctors);
setListViewContent(R.array.mcdonalds);