使用ListView:如何添加标题视图?

Bel*_*lgi 41 android android-listview

我在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
Run Code Online (Sandbox Code Playgroud)

我也试过了

setContentView(R.layout.tryview);
Run Code Online (Sandbox Code Playgroud)

但它也使应用程序崩溃.

非常感谢帮助!

编辑:此类的代码是:

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();
    }
  });
}


}
Run Code Online (Sandbox Code Playgroud)

Par*_*ani 73

您可以多次调用addHeaderView()来添加任意数量的标头.在将适配器设置为列表视图之前,必须执行此操作.

是的,您可以像这样添加标题:

LayoutInflater inflater = getLayoutInflater();
ViewGroup header = (ViewGroup)inflater.inflate(R.layout.header, myListView, false);
myListView.addHeaderView(header, null, false);
Run Code Online (Sandbox Code Playgroud)

  • 在Android 4.4版之前,您无法在setAdapter方法之后使用addHeaderView. (7认同)

use*_*305 29

您根本无法使用View作为ListView的标头.

因为传入的视图必须膨胀.

请查看我在Android ListView上的答案addHeaderView()nullPointerException,了解更多信息的预定义视图.

编辑:

看看这个教程Android ListView和ListActivity - Tutorial.

编辑2:此链接已破坏Android ListActivity与页眉或页脚

  • 在Android 4.4版之前,您无法在setAdapter方法之后使用addHeaderView. (12认同)