我正在尝试使用此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.xml和booklistview.xml
如何显示此列表视图?
答案 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