做了一个简单的主界面,有一个按钮,点击后跳转DietActivity,布局是一个ScrollView,里面放了一个垂直LinearLayout,LinearLayout里放置了一个TextView和一个ListView(id是listView_diet),但是我在拖动加入ListView控件时,布局就只显示一个item,之前都是显示好几行,不知道哪里出了问题
<ScrollView 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:background="@color/bg"
tools:context=".home.DietActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/textView71"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:text="8天轻断食计划"
android:textColor="@color/black"
android:textSize="24sp" />
<ListView
android:id="@+id/listView_diet"
android:layout_width="match_parent"
android:layout_height="match_parent" />
LinearLayout>
ScrollView>
主界面点击按钮后利用intent跳转DietActivity
DietActivity代码:
public class DietActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_diet);
ListView dietList = findViewById(R.id.listView_diet);
String[] listname = new String[] {"轻断食第1天","轻断食第2天","轻断食第3天","轻断食第4天","轻断食第5天","轻断食第6天","轻断食第7天","轻断食第8天"};
dietList.setAdapter(new ArrayAdapter(DietActivity.this, android.R.layout.simple_list_item_1,listname) );
}
}
但是运行后只显示一个item,这是怎么回事呢?
我建议您将ScrollView移除,因为ListView本身已经有滚动功能。使用ScrollView嵌套ListView可能会导致滚动问题。另外,如果您想要使用一个可以滚动的布局,可以考虑使用RecyclerView代替ListView。
简单演示下
1、在布局文件中添加ListView控件,例如:
<ListView
android:id="@+id/listView_diet"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
2、在Activity中找到ListView控件并设置适配器,例如:
ListView listView = findViewById(R.id.listView_diet);
String[] items = {"item1", "item2", "item3"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items);
listView.setAdapter(adapter);
这里创建了一个包含三个字符串元素的数组,并将其传递给一个ArrayAdapter对象。这个适配器将这些元素显示为简单的文本行。最后,将适配器设置到ListView上。
3、(可选)如果您需要处理ListView中的项目点击事件,您可以添加一个OnItemClickListener监听器,例如:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String selectedItem = (String) parent.getItemAtPosition(position);
// 处理被选中的项目
}
});
这里添加了一个OnItemClickListener监听器,当用户点击ListView中的任何一个项目时,将调用onItemClick()方法,并将被选中的项目的位置和内容传递给该方法。