ListView未显示在片段

时间:2016-10-20 14:35:12

标签: android listview

我正在尝试使用此example制作列表视图。但问题是listview根本没有显示。我试图在片段中显示listview。列表视图显示代码如下: BookListFragment.java

public class BookListFragment extends Fragment {
private String[] booktitle;
private String[] call_no;
private String[] due_date;
private String[] renewal;
ArrayList<String[]> bookDetails;
ListView bookList;
BookdetailsAdapter bookdetailsAdapter;

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_booklist,
            container, false);

    bookList = (ListView) view.findViewById(R.id.BooklistView);


    DBadapter dBadapter = new DBadapter(getActivity().getApplicationContext());
    booktitle = dBadapter.getBookName();
    call_no = dBadapter.getCallNo();
    due_date = dBadapter.getDue();
    renewal = dBadapter.getRenew();

    bookDetails = new ArrayList<>();
    for (int i = 0; i < 3; i++) {
        String[] temp = new String[4];
        temp[0] = booktitle[i];
        temp[1] = call_no[i];
        temp[2] = due_date[i];
        temp[3] = renewal[i];

        bookDetails.add(temp);
    }

    bookdetailsAdapter = new BookdetailsAdapter(getActivity(), bookDetails);

    bookList.setAdapter(bookdetailsAdapter);

    return view;
}}

用于显示列表视图的适配器是 BookdetailsAdapter.java

public class BookdetailsAdapter extends ArrayAdapter<String> {
Activity context;
ArrayList<String[]> book;

public BookdetailsAdapter(Activity context, ArrayList<String[]> book) {
    super(context, R.layout.booklistview);
    this.context = context;
    this.book = book;
}

static class ViewHolderItem {
    TextView bookTitle, call_no, due, renewal;
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolderItem viewHolder;
    if (convertView == null) {
        LayoutInflater inflater = context.getLayoutInflater();
        convertView = inflater.inflate(R.layout.booklistview, null, true);
        viewHolder = new ViewHolderItem();
        viewHolder.bookTitle = (TextView) convertView.findViewById(R.id.BookTitle);
        viewHolder.call_no = (TextView) convertView.findViewById(R.id.Call_no);
        viewHolder.due = (TextView) convertView.findViewById(R.id.Due_Date);
        viewHolder.renewal = (TextView) convertView.findViewById(R.id.Remaining_renewal);
        convertView.setTag(viewHolder);
    } else {
        viewHolder = (ViewHolderItem) convertView.getTag();
    }

    String bookInfo[] = book.get(position);
    viewHolder.bookTitle.setText("Pial");
    viewHolder.call_no.setText("dada");
    viewHolder.due.setText("dadada");
    viewHolder.renewal.setText("dadadada");

    return convertView;
}}

这两个布局文件都在fragment_booklist.xmlbooklistview.xml

如何显示此列表视图?

2 个答案:

答案 0 :(得分:1)

将数据传递给超级适配器类,或覆盖适配器的getCount()方法并为其提供书籍数量。

您的适配器未提供有关项目数量的信息。

答案 1 :(得分:0)

xmls看起来很棒。

也许放

bookList = (ListView) getView().findViewById(R.id.BooklistView);


DBadapter dBadapter = new DBadapter(getActivity().getApplicationContext());
booktitle = dBadapter.getBookName();
call_no = dBadapter.getCallNo();
due_date = dBadapter.getDue();
renewal = dBadapter.getRenew();

bookDetails = new ArrayList<>();
for (int i = 0; i < 3; i++) {
    String[] temp = new String[4];
    temp[0] = booktitle[i];
    temp[1] = call_no[i];
    temp[2] = due_date[i];
    temp[3] = renewal[i];

    bookDetails.add(temp);
}

bookdetailsAdapter = new BookdetailsAdapter(getActivity(), bookDetails);

bookList.setAdapter(bookdetailsAdapter);

进入片段的onViewCreated