Android 为什么我的ListView不显示任何内容?
我正在尝试在Android中创建NavigationDrawer布局,主面板工作正常,抽屉是一个ListView。我试着用TextView替换ListView,效果很好。下面是我向ListView添加字符串内容的代码 这是相关代码Android 为什么我的ListView不显示任何内容?,android,listview,android-listview,android-adapter,android-adapterview,Android,Listview,Android Listview,Android Adapter,Android Adapterview,我正在尝试在Android中创建NavigationDrawer布局,主面板工作正常,抽屉是一个ListView。我试着用TextView替换ListView,效果很好。下面是我向ListView添加字符串内容的代码 这是相关代码 private ArrayList<String> drawerContentStrings = new ArrayList<>(); private DrawerLayout homeLayout; private ListView navi
private ArrayList<String> drawerContentStrings = new ArrayList<>();
private DrawerLayout homeLayout;
private ListView navigationDrawer;
private GridLayout homeContent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home_layout);
//homeContent = (GridLayout) findViewById(R.id.home_content);
//drawerContentStrings = getResources().getStringArray(R.array.navigation_content_strings);
//homeLayout = (DrawerLayout) findViewById(R.id.home_layout);
navigationDrawer = (ListView) findViewById(R.id.navigation_drawer);
System.out.println(drawerContentStrings.get(0));
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, R.layout.nav_panel_item, drawerContentStrings);
navigationDrawer.setAdapter(arrayAdapter);
}
private ArrayList drawerContentStrings=new ArrayList();
私人抽屉布局;
私有ListView导航抽屉;
私人内容;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(右布局、主布局);
//homeContent=(GridLayout)findViewById(R.id.home\u content);
//DroperContentStrings=getResources().getStringArray(R.array.navigation\u content\u strings);
//homeLayout=(抽屉布局)findViewById(R.id.home\U布局);
navigationDrawer=(ListView)findViewById(R.id.navigation\u drawer);
System.out.println(drawerContentStrings.get(0));
ArrayAdapter ArrayAdapter=新的ArrayAdapter(此,R.layout.nav_panel_项,抽屉内容字符串);
navigationDrawer.setAdapter(arrayAdapter);
}
以下是导航面板项目的代码(在布局文件夹中)
这是实际抽屉布局的代码:(idk,如果相关的话)
那么,我该如何使这项工作?因为我不知道。谢谢 在strings.xml中,创建一个数组列表:
<string-array name="drawer_options">
<item>Test</item>
<item>Test</item>
<item>Test</item>
</string-array>
home_activity.xml是一个“普通”布局文件。例如:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout 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"
android:orientation="vertical"
android:id="@+id/home_activity"
android:weightSum="1">
<TextView
android:gravity="center"
android:text="Hello"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:padding="10dp"
android:textSize="20dp"
android:textStyle="bold"/>
</LinearLayout>
</ScrollView>
我认为这是因为您将GridLayout高度设置为与占用所有屏幕的父级匹配。
将GridLayout高度更改为包裹内容并选中
<GridLayout
android:id="@+id/home_content"
android:layout_width="match_parent"
android:layout_height="match_parent" // <---- change here to wrap_content and see.
android:columnCount="2"
android:orientation="horizontal"
android:rowCount="2">
您的抽屉内容字符串为空?您在抽屉内容字符串中添加内容的位置
?您可以粘贴整个代码吗?你也可以找到一个很好的例子。
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
<ListView
android:id="@+id/nav_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#fff"
android:choiceMode="singleChoice" />
</android.support.v4.widget.DrawerLayout>
public class BaseActivity extends ActionBarActivity implements AdapterView.OnItemClickListener {
private ListView drawerList;
private DrawerLayout drawerLayout;
private ActionBarDrawerToggle mDrawerToggle;
private String[] options;
private TextView titleActionBar;
protected FrameLayout content;
protected void onCreateDrawer(final int layoutResID) {
setContentView(R.layout.activity_drawer);
content = (FrameLayout) findViewById(R.id.content_frame);
getLayoutInflater().inflate(layoutResID, content, true);
setupActionBar();
options = getResources()
.getStringArray(R.array.drawer_options);
drawerLayout =
(DrawerLayout) findViewById(R.id.drawer_layout);
drawerList = (ListView) findViewById(R.id.nav_drawer);
drawerList.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, options));
drawerList.setOnItemClickListener(this);
setupDrawer();
}
private void setupActionBar() {
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setCustomView(R.layout.action_bar);
titleActionBar = (TextView) findViewById(R.id.title_action_bar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
}
private void setupDrawer() {
mDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.drawer_open, R.string.drawer_close) {
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
titleActionBar.setText("AppName");
invalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
titleActionBar.setText("Options");
invalidateOptionsMenu();
}
};
mDrawerToggle.setDrawerIndicatorEnabled(true);
drawerLayout.setDrawerListener(mDrawerToggle);
}
//get the position of the clicked list item
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
switch (position) {
case 2:
//For example, I redirect users to LoginActivity when they click on position 2 //(in this case, last item)
startActivity(new Intent(getApplicationContext(), LoginActivity.class));
drawerLayout.closeDrawer(drawerList);
break;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.home_menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}
}
public class HomeActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.onCreateDrawer(R.layout.home_activity);
}
}
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout 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"
android:orientation="vertical"
android:id="@+id/home_activity"
android:weightSum="1">
<TextView
android:gravity="center"
android:text="Hello"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:padding="10dp"
android:textSize="20dp"
android:textStyle="bold"/>
</LinearLayout>
</ScrollView>
<GridLayout
android:id="@+id/home_content"
android:layout_width="match_parent"
android:layout_height="match_parent" // <---- change here to wrap_content and see.
android:columnCount="2"
android:orientation="horizontal"
android:rowCount="2">