我制作了一个适用于我的Facebook群组的应用。 XML使用了很多导航抽屉WebView
,ListView
,而Java使用了很多适配器来运行列表视图。我想知道的是有一种方法来缩小我的代码以使应用程序运行得更好。我已经添加了一段XML和java供您查看。非常感谢任何帮助。
这是为每个数组适配器重复的一些java代码,我有一些你可以看到的。
ListView CastingAppsDlNav,FireStickDlNav,RootingToolsDlNav,ModdingToolsDlNav,LauncherDlNav,FlimnTvDlNav,ShowBoxDlNav,
KodiDlNav,LiveTvDlNav,MediaPlayerDlNav,MxPlayerNav,CodecNav,MusicAppNav,MusicDlAppsNav,AnimeNav,TvGuideDlsNav;
ArrayAdapter<String> CastingAdapter,FireStickAdapter,RootingToolAdapter,ModdingToolsAdapter,LauncherAdapter,FilmnTvappAdapter,
ShowBoxAdapter,KodiDlAdapter,LiveTvAdapter,MediaPlayerAdapter, MxPlayerAdapter, CodecAdapter, MusicAppsAdapter, MusicDlAppsAdapter,
AnimeAdapter,TvGuidesAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_downloads);
DownloadDrawer = (DrawerLayout) findViewById(R.id.DownloadDrawer);
SvDownloads = (ScrollView) findViewById(R.id.SvDownloads);
SvDownloads.setScrollbarFadingEnabled(false);
// Tv Guide Array setup
TvGuideDlsNav = (ListView) findViewById(R.id.TvGuideDlsNav);
TvGuideDlsNav.setScrollbarFadingEnabled(false);
String[] TvGuideArray = {"Sky+ Tv Guide", "TvGuide.co.uk","Tv Shows Favs","Tv ShowTimes","HomeScreen"};
TvGuidesAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,TvGuideArray);
TvGuideDlsNav.setAdapter(TvGuidesAdapter);
TvGuideDlsNav.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
switch (position){
case 0:
//Sky Plus
Intent iSkyplusH20 = new Intent(Intent.ACTION_VIEW, Uri.parse(SkyplusplayDl));
startActivity(iSkyplusH20);
break;
case 1:
//Tvguide.co.uk
Intent iTvguidecouk = new Intent(Intent.ACTION_VIEW, Uri.parse(TvGuideUkPlayDl));
startActivity(iTvguidecouk);
break;
case 2:
//Tv Shows favs
Intent iTvshowsFavs = new Intent(Intent.ACTION_VIEW, Uri.parse(TvshowsFavPlayDl));
startActivity(iTvshowsFavs);
break;
case 3:
//Tv Showtimes
Intent iTvShowtimes = new Intent(Intent.ACTION_VIEW, Uri.parse(TVShowtimePlayDl));
startActivity(iTvShowtimes);
break;
case 4:
DownloadDrawer.closeDrawer(TvGuideDlsNav);
break;
}
}
});
接下来是我的XML,这是我想要压缩的主要原因。
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.harrops.h20droidapp.downloads"
android:background="@drawable/splashbkground"
android:id="@+id/DownloadDrawer">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true">
<ImageView
android:contentDescription="@string/desc"
android:background="@drawable/h20logo"
android:layout_width="fill_parent"
android:layout_height="80sp"
android:id="@+id/imageView12"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_margin="10dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="H20 Downloads"
android:id="@+id/textView12"
android:layout_below="@+id/imageView12"
android:layout_centerHorizontal="true"
android:layout_marginTop="40sp"
android:textColor="#ffffff" />
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/SvDownloads"
android:layout_below="@+id/textView12"
android:layout_centerHorizontal="true"
android:layout_marginBottom="10dp">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/CastingDl"
android:id="@+id/bCastingAppsDl"
android:layout_below="@+id/textView12"
android:layout_centerHorizontal="true"
android:layout_marginTop="10sp"
android:textSize="20sp"
android:background="#4b48ac"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/FireStickDl"
android:id="@+id/bFireStickDl"
android:layout_below="@+id/bCastingAppsDl"
android:layout_centerHorizontal="true"
android:textSize="20sp"
android:background="#4b48ac"
android:layout_marginTop="10sp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/RootingDl"
android:id="@+id/bRootingToolsDl"
android:layout_below="@+id/bFireStickDl"
android:layout_centerHorizontal="true"
android:textSize="20dp"
android:background="#4b48ac"
android:layout_marginTop="10sp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/ModdingDl"
android:id="@+id/bModdingToolsDl"
android:layout_below="@+id/bRootingToolsDl"
android:layout_centerHorizontal="true"
android:textSize="20dp"
android:background="#4b48ac"
android:layout_marginTop="10sp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/LauncherDl"
android:id="@+id/bLauncherAppDl"
android:layout_below="@+id/bRootingToolsDl"
android:layout_centerHorizontal="true"
android:textSize="20sp"
android:background="#4b48ac"
android:layout_marginTop="10sp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/FilmnTvDl"
android:id="@+id/bFilmnTvDl"
android:layout_below="@+id/bLauncherAppDl"
android:layout_centerHorizontal="true"
android:textSize="20sp"
android:background="#4b48ac"
android:layout_marginTop="10sp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/LiveTvDl"
android:id="@+id/bLiveTvDl"
android:layout_below="@+id/bFilmnTvDl"
android:layout_centerHorizontal="true"
android:textSize="20sp"
android:background="#4b48ac"
android:layout_marginTop="10sp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/MediaplayerDl"
android:id="@+id/bMediaPlayerDl"
android:layout_below="@+id/bLiveTvDl"
android:layout_centerHorizontal="true"
android:textSize="20sp"
android:background="#4b48ac"
android:layout_marginTop="10sp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Anime Apps"
android:id="@+id/bAnimeDl"
android:layout_below="@+id/bMediaPlayerDl"
android:layout_centerHorizontal="true"
android:textSize="20sp"
android:background="#4b48ac"
android:layout_marginTop="10sp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/MusicAppsDl"
android:id="@+id/bMusicApps"
android:layout_below="@+id/bAnimeDl"
android:layout_centerHorizontal="true"
android:textSize="20sp"
android:background="#4b48ac"
android:layout_marginTop="10sp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Tv Guides"
android:id="@+id/bTvGuideDl"
android:layout_below="@+id/bMusicApps"
android:layout_centerHorizontal="true"
android:textSize="20sp"
android:background="#4b48ac"
android:layout_marginTop="10sp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/homescreenDl"
android:id="@+id/bHomescreenDl"
android:layout_below="@+id/bMusicApps"
android:layout_centerHorizontal="true"
android:textSize="20sp"
android:background="#4b48ac"
android:layout_marginTop="10sp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" />
</LinearLayout>
</ScrollView>
</RelativeLayout>
<ListView
android:layout_width="200sp"
android:layout_height="fill_parent"
android:id="@+id/CastingAppsDlNav"
android:background="#4b48ac"
android:layout_gravity="start"
>
</ListView>
<ListView
android:layout_width="200sp"
android:layout_height="fill_parent"
android:id="@+id/FireStickDlNav"
android:background="#4b48ac"
android:layout_gravity="start"
>
</ListView>
<ListView
android:layout_width="200sp"
android:layout_height="fill_parent"
android:id="@+id/RootingToolsDlNav"
android:background="#4b48ac"
android:layout_gravity="start"
>
</ListView>
<ListView
android:layout_width="200sp"
android:layout_height="fill_parent"
android:id="@+id/ModdingToolsDlNav"
android:background="#4b48ac"
android:layout_gravity="start"
>
</ListView>
<ListView
android:layout_width="200sp"
android:layout_height="fill_parent"
android:id="@+id/LauncherDlNav"
android:background="#4b48ac"
android:layout_gravity="start"
>
</ListView>
<ListView
android:layout_width="200sp"
android:layout_height="fill_parent"
android:id="@+id/FlimnTvDlNav"
android:background="#4b48ac"
android:layout_gravity="start"
>
</ListView>
<ListView
android:layout_width="200sp"
android:layout_height="fill_parent"
android:id="@+id/LiveTvDlNav"
android:background="#4b48ac"
android:layout_gravity="start"
>
</ListView>
<ListView
android:layout_width="200sp"
android:layout_height="fill_parent"
android:id="@+id/MediaPlayerDlNav"
android:background="#4b48ac"
android:layout_gravity="start"
>
</ListView>
<ListView
android:layout_width="200sp"
android:layout_height="fill_parent"
android:id="@+id/MusicAppNav"
android:background="#4b48ac"
android:layout_gravity="start"
>
</ListView>
<ListView
android:layout_width="200sp"
android:layout_height="fill_parent"
android:id="@+id/MemeAppDlNav"
android:background="#4b48ac"
android:layout_gravity="start"
>
</ListView>
<ListView
android:layout_width="200sp"
android:layout_height="fill_parent"
android:id="@+id/ShowBoxDlNav"
android:background="#4b48ac"
android:layout_gravity="end"
>
</ListView>
<ListView
android:layout_width="200sp"
android:layout_height="fill_parent"
android:id="@+id/KodiDlNav"
android:background="#4b48ac"
android:layout_gravity="end"
>
</ListView>
<ListView
android:layout_width="200sp"
android:layout_height="fill_parent"
android:id="@+id/MxPlayerNav"
android:background="#4b48ac"
android:layout_gravity="end"
>
</ListView>
<ListView
android:layout_width="200sp"
android:layout_height="fill_parent"
android:id="@+id/MusicDlAppsNav"
android:background="#4b48ac"
android:layout_gravity="end"
>
</ListView>
<ListView
android:layout_width="200sp"
android:layout_height="fill_parent"
android:id="@+id/CodecNav"
android:background="#4b48ac"
android:layout_gravity="start"
>
</ListView>
<ListView
android:layout_width="200sp"
android:layout_height="fill_parent"
android:id="@+id/AnimeNav"
android:background="#4b48ac"
android:layout_gravity="start"
>
</ListView>
<ListView
android:layout_width="200sp"
android:layout_height="fill_parent"
android:id="@+id/TvGuideDlsNav"
android:background="#4b48ac"
android:layout_gravity="start"
>
</ListView>
</android.support.v4.widget.DrawerLayout>
答案 0 :(得分:1)
一个选项是使用Fragments来包含单独的ListView。
Here是片段的样子。
假设其他ListViews具有与TvGuideDlsNav类似的功能,这样的事情可能会解决同时处理所有视图的活动:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment android:name="com.yourpackage.AListOfListViews"
android:id="@+id/list"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" >
<!-- THE LIST TITLES HERE -->
</fragment>
<fragment android:name="com.yourpackage.HereIsAListViewOrActivity"
android:id="@+id/viewer"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="match_parent" >
<!-- LISTVIEW OR ACTIVITY HERE -->
</fragment>
</LinearLayout>
您可以在第一个片段中拥有一组ListView标题。当用户选择一个项目,即&#34; TV Guide&#34;时,第二个片段填充并显示相应的ListView。当用户选择第二个片段上的项目时,您编写的相同代码可以处理OnItemClick。
您还可以通过将ListView片段替换为活动来重用第二个片段。
有关如何在Android中实现片段的详细信息,请参阅Android文档。
修改强>
要实现片段,您需要有多个扩展片段类的类,每个类都包含一个包含ListView的布局。
如Android documentation中所述,您的OnItemClick应包含一个片段管理器来更改片段:
例如,以下是如何将一个片段替换为另一个片段:
// Create new fragment and transaction
Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment
transaction.replace(R.id.fragment_container, newFragment);
// Commit the transaction
transaction.commit();
在这种情况下,R.id.fragment_container将是R.id.viewer,它包含第二个片段。此外,newFragment将是处理所选ListView的片段类。