Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.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 ArrayAdapter数据集中的元素数为零_Android_Listview_Android Arrayadapter - Fatal编程技术网

Android ArrayAdapter数据集中的元素数为零

Android ArrayAdapter数据集中的元素数为零,android,listview,android-arrayadapter,Android,Listview,Android Arrayadapter,我正在尝试为行构建一个带有自定义视图的列表,每行将包含一个图像视图和两个文本视图 为此,我扩展了ArrayAdapter类(称为PostersArrayAdapter)并重写了getView()方法,以便在数据和行布局之间建立正确的连接 但是,当我尝试使用带有一些数据的PosterData类数组(我的实现)构造PosterArrayAdapter时,结果是适配器为空,意味着getCount()返回零,listView为空 有人能告诉我我做错了什么吗? 我依赖于我在这里找到的一个代码- 多谢各位

我正在尝试为行构建一个带有自定义视图的列表,每行将包含一个图像视图和两个文本视图

为此,我扩展了ArrayAdapter类(称为PostersArrayAdapter)并重写了getView()方法,以便在数据和行布局之间建立正确的连接

但是,当我尝试使用带有一些数据的PosterData类数组(我的实现)构造PosterArrayAdapter时,结果是适配器为空,意味着getCount()返回零,listView为空

有人能告诉我我做错了什么吗? 我依赖于我在这里找到的一个代码-

多谢各位

以下是相关代码:(PosterData类只是一个具有两个字符串字段的类)

公共类PostersListActivity扩展ListActivity{
PICS的最终私有整数=2;
私人内容获取者cg;
私人PosterData[]海报;
私有列表视图列表视图;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
cg=新内容获取者(图片数量);
尝试
{
海报=cg.parseIndexFile();
int res=cg.下载Posterpics(1);
} 
捕获(客户端协议例外e)
{
e、 printStackTrace();
} 
捕获(IOE异常)
{
e、 printStackTrace();
}
//使用我们自己的列表适配器
listView=(listView)findViewById(android.R.id.list);
//setAdapter((ListAdapter)新的ArrayAdapter(this,R.layout.list_项,R.id.title,titles));
PostersArrayAdapter postersAdapter=新的PostersArrayAdapter(此为海报);
Log.d(“PostersListActivity.onCreate()”,适配器数据集中的元素数为“+postersAdapter.getCount());
setAdapter(postersAdapter);
}
公共类PosterArrayAdapter扩展了ArrayAdapter{
私人最终活动背景;
私人最终PosterData[]海报;
公共PosterArrayAdapter(活动背景、PosterData[]海报){
超级(上下文、右布局、列表项);
this.context=上下文;
这个。海报=海报;
}
//static保存对外部类的引用并避免访问
//包含类的任何成员
类视图持有者{
公众影像视图标识;
公共文本视图标题;
公共文本视图名称;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
//ViewHolder会将评估缓冲到行的各个字段
//布局
视窗座;
//如果作为参数传递,则回收现有视图
//这将节省Android上的内存和时间
//仅当所有类的基本布局相同时,此选项才有效
视图行视图=转换视图;
if(rowView==null)
{
LayoutInflater充气器=上下文。getLayoutInflater();
rowView=充气机。充气(R.layout.list_项,空,真);
holder=新的ViewHolder();
holder.title=(TextView)rowView.findViewById(R.id.title);
holder.names=(TextView)rowView.findViewById(R.id.names);
holder.logo=(ImageView)rowView.findviewbyd(R.id.logo);
rowView.setTag(支架);
} 
其他的
{
holder=(ViewHolder)rowView.getTag();
}
holder.title.setText(海报[position].getTitle());
holder.names.setText(海报[position].getNames());
holder.logo.setImageResource(R.drawable.icon);
返回行视图;
}
}   
}
以下是我正在使用的列表视图布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView android:id="@+id/textView1" 
        android:textAppearance="?android:attr/textAppearanceLarge" 
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content" 
        android:text="@string/selectPoster" 
        android:layout_gravity="center_horizontal">
    </TextView>
    <ListView android:id="@android:id/list" 
        android:layout_height="wrap_content"  
        android:layout_width="match_parent">
    </ListView>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content" android:layout_height="wrap_content">

    <LinearLayout android:id="@+id/linearLayout1"
        android:layout_height="match_parent" 
        android:layout_width="wrap_content" >

        <ImageView android:id="@+id/logo" 
            android:src="@drawable/icon" 
            android:layout_height="wrap_content"            
            android:layout_width="22px"
            android:layout_marginTop="4px" 
            android:layout_marginRight="4px"
            android:layout_marginLeft="4px">
        </ImageView>

        <LinearLayout android:id="@+id/linearLayout2" 
            android:layout_height="match_parent" 
            android:layout_width="fill_parent" 
            android:orientation="vertical">
            <TextView android:id="@+id/title"
                android:text="TextView" 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" 
                android:textSize="30px">
            </TextView>
            <TextView android:id="@+id/names"  
                android:text="TextView"             
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content">
            </TextView>             
        </LinearLayout>

    </LinearLayout>
</LinearLayout>

下面是我使用的列表元素布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView android:id="@+id/textView1" 
        android:textAppearance="?android:attr/textAppearanceLarge" 
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content" 
        android:text="@string/selectPoster" 
        android:layout_gravity="center_horizontal">
    </TextView>
    <ListView android:id="@android:id/list" 
        android:layout_height="wrap_content"  
        android:layout_width="match_parent">
    </ListView>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content" android:layout_height="wrap_content">

    <LinearLayout android:id="@+id/linearLayout1"
        android:layout_height="match_parent" 
        android:layout_width="wrap_content" >

        <ImageView android:id="@+id/logo" 
            android:src="@drawable/icon" 
            android:layout_height="wrap_content"            
            android:layout_width="22px"
            android:layout_marginTop="4px" 
            android:layout_marginRight="4px"
            android:layout_marginLeft="4px">
        </ImageView>

        <LinearLayout android:id="@+id/linearLayout2" 
            android:layout_height="match_parent" 
            android:layout_width="fill_parent" 
            android:orientation="vertical">
            <TextView android:id="@+id/title"
                android:text="TextView" 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" 
                android:textSize="30px">
            </TextView>
            <TextView android:id="@+id/names"  
                android:text="TextView"             
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content">
            </TextView>             
        </LinearLayout>

    </LinearLayout>
</LinearLayout>

确保
getCount()
正确实施,以便:

     @Override
     public int getCount(){
           return posters!=null ? posters.length : 0;
     }
编辑:通过调用

   ArrayAdapter(Context context, int textViewResourceId)
   ArrayAdapter(Context context, int textViewResourceId, T[] objects)
构造函数您没有将对象数组传递给构造函数

你应该给警察打电话

   ArrayAdapter(Context context, int textViewResourceId)
   ArrayAdapter(Context context, int textViewResourceId, T[] objects)

构造函数,它还将对象数组作为参数。

现在,它返回正确的数字。更好的是,现在列表显示正确(在列表为空之前)。为什么重写getCount方法解决了这个问题?我认为这是因为您没有调用正确的超级构造函数。调用正确的超级构造函数将阻止重写getCount的需要?为什么你认为我打错电话了?什么原理让你得出这个结论?解决了。非常感谢你。