2011-11-02 2 views
36

tôi looke tại the ListView API và tôi thấy phương pháp:Sử dụng ListView: Cách thêm chế độ xem tiêu đề?

addHeaderView (Xem v)

Những gì tôi muốn làm là để có một bố trí trên danh sách, có thể như vậy?

tôi đã cố gắng làm một cái gì đó giống như:

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 

Tôi cũng đã cố gắng

setContentView(R.layout.tryview); 

nhưng nó cũng làm cho sự sụp đổ của ứng dụng.

Trợ giúp được đánh giá rất nhiều!

Sửa: Mã cho lớp này là:

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

gửi nhật ký sự cố. –

+0

Nhìn vào câu trả lời của tôi. Hy vọng nó sẽ giúp bạn. Cũng tham khảo các liên kết tôi đã đề cập trong câu trả lời của tôi. – user370305

+0

@ user370305 - xem nhận xét của tôi về câu trả lời của bạn – Belgi

Trả lời

28

Bạn chỉ đơn giản là không thể sử dụng Xem dưới dạng một Header của ListView.

Do chế độ xem đang được truyền vào phải được tăng cao.

Nhìn vào câu trả lời của tôi tại Android ListView addHeaderView() nullPointerException for predefined Views để biết thêm thông tin.

EDIT:

Nhìn vào hướng dẫn này Android ListView and ListActivity - Tutorial.

EDIT 2: Liên kết này được chia Android ListActivity with a header or footer

+0

Tôi đã thử thêm Xem tiêu đề = (Xem) getLayoutInflater(). Inflate (R.layout.headerView, null); ls.addHeaderView (tiêu đề); nhưng nó bị treo. (Tôi bổ sung này sau khi dòng \t lv.setAdapter (new ArrayAdapter (GroupsActivity.this, \t \t android.R.layout.simple_list_item_multiple_choice, your_array_contents));) – Belgi

+12

Trước khi Android phiên bản 4.4 bạn không thể sử dụng addHeaderView sau khi phương pháp setAdapter . – DcodeChef

+0

Liên kết Chỉnh sửa 2, cung cấp Lỗi 404, vì vậy hãy xóa nó hoặc sửa liên kết sẽ được đánh giá cao. –

63

Bạn có thể thêm bao nhiêu tiêu đề theo ý muốn bằng cách gọi addHeaderView() nhiều lần. Bạn phải làm điều đó trước khi đặt bộ điều hợp vào chế độ xem danh sách.

Và có bạn có thể thêm tiêu đề cái gì đó như thế này:

LayoutInflater inflater = getLayoutInflater(); 
ViewGroup header = (ViewGroup)inflater.inflate(R.layout.header, myListView, false); 
myListView.addHeaderView(header, null, false); 
+0

nó sẽ không dẫn đến sụp đổ, nếu bạn thêm nó sau đó. Tôi nghĩ rằng đó không phải là vấn đề. –

+1

@YashwanthKumar Đây là theo tài liệu android: http://goo.gl/AWU4K, đọc kỹ phần LƯU Ý :) –

+1

đúng, tôi vừa nói, nó sẽ không gây ra sự cố, nó sẽ không hiển thị chế độ xem tiêu đề. –