gpt4 book ai didi

java - Android:ListView 与 TextView header 问题

转载 作者:行者123 更新时间:2023-12-01 15:44:14 26 4
gpt4 key购买 nike

我有一个主要 Activity ,例如:

public class TestActivity  extends Activity{
List<String> users;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.usersview);
showList();

}
private void showList() {
users=new ArrayList<String>();
users.add("User1");
users.add("User2");
users.add("User3");

ListView lv=(ListView)findViewById(R.id.listv);
// TextView tv=(TextView)findViewById(R.id.welcomeMsg);
// lv.addHeaderView(tv);
lv.setAdapter( new ListArrAdapter(this, R.layout.userlist, users));
}

数组适配器:

public class ListArrAdapter extends ArrayAdapter<String> {
private List<String> users;
private Context context;
private int listlayout;

public ListArrAdapter(Context context, int textViewResourceId,
List<String> users) {
super(context, textViewResourceId, users);
this.users = users;
listlayout = textViewResourceId;
this.context = context;
}
@Override
public View getView(int position, View convertView, ViewGroup viewGroup) {
String userName = users.get(position);
if (null == convertView) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(listlayout, null);
}
TextView firstName = (TextView) convertView
.findViewById(R.id.firstNameTv);
firstName.setText(userName);
return convertView;
}
}

用户 View 布局:

<?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">
<TextView
android:text="@string/header"
android:id="@+id/welcomeMsg"
android:textSize="30dp"
android:layout_width="match_parent"
android:layout_height="match_parent"></TextView>
<ListView
android:layout_height="wrap_content"
android:id="@+id/listv"
android:layout_width="match_parent"></ListView>
</LinearLayout>

每个项目的用户列表布局:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#EEFFEE"
android:orientation="vertical">
<TextView
android:id="@+id/firstNameTv"
android:textSize="20dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"></TextView>
</LinearLayout>

我的问题是:

当我运行此代码时,仅显示欢迎消息(不显示列表中的项目)。

当我取消注释这些行时

    TextView tv=(TextView)findViewById(R.id.welcomeMsg);
lv.addHeaderView(tv);

在 TestActivity 中,我遇到以下异常

09-16 19:45:10.680: ERROR/AndroidRuntime(31044): Caused by: java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams

排队

lv.setAdapter( new ListArrAdapter(this, R.layout.userlist, users));

我想显示顶部带有消息标题的用户列表。但我遇到了这些问题。问题出在哪里,解决办法是什么。

最佳答案

在您的用户 View 布局中 -

 <TextView
android:text="@string/header"
android:id="@+id/welcomeMsg"
android:textSize="30dp"
android:layout_width="match_parent"
android:layout_height="match_parent"></TextView>

将布局更改为wrap_content。

我的猜测是 TextView 覆盖了整个屏幕。因此该列表仍然不可见。

用于向 ListView 添加标题 -

TextView tv = new TextView(this);
tv.setText("Header Text");
listView.addHeaderView(tv);

关于java - Android:ListView 与 TextView header 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7441316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com