Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Listview返回空_Android_Android Layout_Listview - Fatal编程技术网

Android Listview返回空

Android Listview返回空,android,android-layout,listview,Android,Android Layout,Listview,你好,我正在尝试在列表视图中构建一个水平列表的书架,但是当应用程序运行时,列表视图是空白的。 我错过了什么? 以下是我的代码(以及我用作指南的教程中的一些代码) java public class ListBooks extends ActionBarActivity { ListView listView; private VerticalAdapter verListAdapter; @Override protected void onCreate(Bun

你好,我正在尝试在列表视图中构建一个水平列表的书架,但是当应用程序运行时,列表视图是空白的。 我错过了什么? 以下是我的代码(以及我用作指南的教程中的一些代码)

java

public class ListBooks extends ActionBarActivity {

    ListView listView;
    private VerticalAdapter verListAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list_books);

        listView = (ListView)findViewById(R.id.listbooks);
        BookItem book1 = new BookItem("Fist of Fury");
        BookItem book2 = new BookItem("Fist of the fists");
        BookItem book3 = new BookItem("Enders game");
        BookItem book4 = new BookItem("Lovers");

        ArrayList<BookItem> arrayList = new ArrayList<BookItem>();
        arrayList.add(book1);
        arrayList.add(book2);
        ArrayList<BookItem> list = new ArrayList<BookItem>();
        list.add(book3);
        list.add(book4);
        ArrayList<ArrayList<BookItem>> group = new ArrayList<ArrayList<BookItem>>();
        group.add(arrayList);
        group.add(list);
        verListAdapter = new VerticalAdapter(this, R.layout.activity_book_list, group);
        listView.setAdapter(verListAdapter);

    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_list_books, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
    private class VerticalAdapter extends ArrayAdapter<ArrayList<BookItem>> {
        private int resource;

        public VerticalAdapter(Context _context, int _ResourceId,
                               ArrayList<ArrayList<BookItem>> _items) {
            super(_context, _ResourceId, _items);
            this.resource = _ResourceId;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View rowView;

            if (convertView == null) {
                rowView = LayoutInflater.from(getContext()).inflate(resource,
                        null);
            } else {
                rowView = convertView;
            }

            HorizontalListView hListView = (HorizontalListView) rowView
                    .findViewById(R.id.sublistview);
            HorizontalAdapter horListAdapter = new HorizontalAdapter(
                    getContext(), R.layout.listitem, getItem(position));
            hListView.setAdapter(horListAdapter);

            return rowView;
        }
    }

   private class HorizontalAdapter extends ArrayAdapter<BookItem> {

        private int resource;

        public HorizontalAdapter(Context _context, int _textViewResourceId,
                                 ArrayList<BookItem> _items) {
            super(_context, _textViewResourceId, _items);
            this.resource = _textViewResourceId;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View retval = LayoutInflater.from(getContext()).inflate(
                    this.resource, null);

            TextView topText = (TextView) retval.findViewById(R.id.title);


            topText.setText(getItem(position).getTitle());


            return retval;
        }
    }

}
公共类ListBooks扩展了ActionBarActivity{
列表视图列表视图;
专用垂直适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u list\u books);
listView=(listView)findViewById(R.id.listbooks);
BookItem book1=新的BookItem(“愤怒之拳”);
BookItem book2=新的BookItem(“拳头”);
BookItem book3=新的BookItem(“Enders游戏”);
BookItem book4=新的BookItem(“恋人”);
ArrayList ArrayList=新的ArrayList();
arrayList.add(第1册);
arrayList.add(第2册);
ArrayList=新建ArrayList();
列表。添加(第3册);
列表。添加(第4册);
ArrayList组=新的ArrayList();
group.add(arrayList);
组。添加(列表);
verListAdapter=新的垂直适配器(此,R.layout.activity\u book\u list,组);
setAdapter(verListAdapter);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.menu\u list\u book,menu);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
//noinspection SimplifiableIf语句
if(id==R.id.action\u设置){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
私有类垂直适配器扩展了ArrayAdapter{
私有int资源;
公共垂直适配器(Context\u Context,int\u ResourceId,
ArrayList(项目){
超级(\u上下文、\u资源ID、\u项目);
this.resource=\u ResourceId;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行视图;
if(convertView==null){
rowView=LayoutInflater.from(getContext()).flate(资源、,
无效);
}否则{
rowView=convertView;
}
HorizontalListView hListView=(HorizontalListView)行视图
.findViewById(R.id.sublistview);
HorizontalAdapter horListAdapter=新的HorizontalAdapter(
getContext(),R.layout.listitem,getItem(位置));
hListView.setAdapter(horListAdapter);
返回行视图;
}
}
私有类HorizontalAdapter扩展了ArrayAdapter{
私有int资源;
公共水平适配器(Context\u Context,int\u textViewResourceId,
ArrayList(项目){
超级(_上下文、_文本视图资源ID、_项目);
this.resource=\u textViewResourceId;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
View retval=LayoutInflater.from(getContext())。充气(
此参数为0.resource,null);
TextView topText=(TextView)retval.findViewById(R.id.title);
setText(getItem(position.getTitle());
返回返回;
}
}
}
布局文件 Listitem.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#fff">


    <ImageView
        android:id="@+id/image"
        android:layout_width="150dip"
        android:layout_height="150dip"
        android:scaleType="centerCrop"
        android:src="@drawable/wood"
        />

    <TextView
        android:id="@+id/title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textColor="#000"
        android:gravity="center_horizontal"
        />

</LinearLayout>

活动\u book\u list.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    tools:context="com.azed">


    <com.HorizontalListView
        android:id="@+id/sublistview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#ddd"/>

</LinearLayout>

活动\u列表\u books.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent"

    android:orientation="vertical"
    tools:context="com.azed">

    <ListView
        android:id="@+id/listbooks"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        ></ListView>

</LinearLayout>


是否检查了
适配器.getCount()
返回的值是否超过0?@joao2fast4u是。它返回一个计数2。好的,但是你必须同时签入两个适配器。另外,为了测试的目的,将彩色背景应用于您的项目,以便您知道它们在那里。@joao2fast4u我已经检查了两个适配器,它们都包含数据。当我逐步浏览代码时,除了最后的列表视图是空的之外,其他一切似乎都正常。如果您有数据并且正在调用
getView()
方法,请尝试在XML中的
HorizontalListView
上设置一个固定高度值。