我在the ListView API闲聊 我看到了方法:
addHeaderView(查看v)
我想要做的是在列表上方放置一个布局,这可能吗?
我尝试过这样的事情:
EditText et=new EditText(this);
et.setLayoutParams(new Gallery.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
et.setInputType(InputType.TYPE_CLASS_TEXT);
addHeaderView(et); //makes app crash
我也试过
setContentView(R.layout.tryview);
但它也会让应用程序崩溃。
非常感谢帮助!
修改:此课程的代码为:
public class GroupsActivity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String your_array_contents[] = {"a","ab","c"};
setListAdapter(new ArrayAdapter<String>(this, R.layout.groups_layout, your_array_contents));
EditText et=new EditText(this);
et.setLayoutParams(new Gallery.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
et.setInputType(InputType.TYPE_CLASS_TEXT);
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
lv.setAdapter(new ArrayAdapter<String>(GroupsActivity.this,
android.R.layout.simple_list_item_multiple_choice, your_array_contents));
lv.addHeaderView(et); //makes app crash
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView text
// Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
//Toast.LENGTH_SHORT).show();
}
});
}
}
答案 0 :(得分:71)
您可以多次调用addHeaderView()来添加任意数量的标头。在将适配器设置为列表视图之前,您必须执行此操作。
是的,您可以像这样添加标题:
LayoutInflater inflater = getLayoutInflater();
ViewGroup header = (ViewGroup)inflater.inflate(R.layout.header, myListView, false);
myListView.addHeaderView(header, null, false);
答案 1 :(得分:29)
您根本无法将View用作ListView的标题。
因为传入的视图必须膨胀。
在Android ListView addHeaderView() nullPointerException for predefined Views查看我的答案以获取更多信息。
修改强>
查看本教程Android ListView and ListActivity - Tutorial 。
编辑2 :此链接已损坏Android ListActivity with a header or footer
答案 2 :(得分:0)
我发现将标题视图夸大为:
inflater.inflate(R.layout.listheader, container, false);
作为Fragment的ViewGroup的容器,使用从FragmentLayout扩展的LayoutParam来使headerview膨胀,但是ListView希望它是AbsListView.LayoutParams。
因此,我的问题通过将通过列表作为容器传递的标题视图扩展而得以解决:
ListView list = fragmentview.findViewById(R.id.listview);
View headerView = inflater.inflate(R.layout.listheader, list, false);
然后
list.addHeaderView(headerView, null, false);
Kinda的答案很晚,但我希望这可以对某人有所帮助