Android ListView中的一个项目根本不显示(最初以及重新使用时)

Android ListView中的一个项目根本不显示(最初以及重新使用时),android,listview,android-listview,Android,Listview,Android Listview,我使用一个自定义的ArrayAdapter和这个getView方法: public View getView(int position, View convertView, ViewGroup parent) { if(convertView == null) { LayoutParams lp; convertView = new RelativeLayout(context); convertV

我使用一个自定义的
ArrayAdapter
和这个
getView
方法:

public View getView(int position, View convertView, ViewGroup parent) {
        if(convertView == null)
        {
        LayoutParams lp;

            convertView = new RelativeLayout(context);
            convertView.setLayoutParams(
                new AbsListView.LayoutParams(LayoutParams.MATCH_PARENT, 60));

            //--> line
            //----> serial
            TextView serial = new TextView(context);
            serial.setId(0x01);
            serial.setTextColor(Color.WHITE);
            serial.setGravity(Gravity.CENTER);
            lp = new LayoutParams(parent.getWidth()>>3,(int)(75*coeff_height));
            lp.addRule(RelativeLayout.ALIGN_PARENT_TOP);
            lp.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
            serial.setLayoutParams(lp);
            serial.setTag("serial");
            ((RelativeLayout)convertView).addView(serial);
            //----> profil
            TextView profil = new TextView(context);
            profil.setId(0x02);
            profil.setTextColor(Color.WHITE);
            profil.setGravity(Gravity.CENTER);
            lp = new LayoutParams(parent.getWidth()>>3,(int)(75*coeff_height));
            lp.addRule(RelativeLayout.RIGHT_OF, serial.getId());
            profil.setLayoutParams(lp);
            profil.setTag("profil");
            ((RelativeLayout)convertView).addView(profil);
            //----> modified
            TextView modified = new TextView(context);
            modified.setId(0x08);
            modified.setTextColor(Color.WHITE);
            modified.setGravity(Gravity.CENTER);
            lp = new LayoutParams(parent.getWidth()>>3,(int)(75*coeff_height));
            lp.addRule(RelativeLayout.RIGHT_OF, created.getId());
            modified.setLayoutParams(lp);
            modified.setTag("modified");
            ((RelativeLayout)convertView).addView(modified);
        }

        //set content
        ((TextView)convertView.findViewWithTag("serial")).setText(""+position);
        ((TextView)convertView.findViewWithTag("profil")).setText("profil");
        ((TextView)convertView.findViewWithTag("modified")).setText("Dernière modification");
        System.out.println("END Position "+position+" // "+convertView);

        return convertView;
}
当显示my
ListView
时,不显示第一个项目(最初)或与此第一个
视图的重复使用相对应的项目(回收视图)。视图的内容为空。所有其他视图均正确显示

你知道这个问题吗

编辑:更多信息,17:40 13火星(UTC+1)

我将源代码简化如下:

public View getView(int position, View convertView, ViewGroup parent) {

    System.out.println("parent = "+parent.getClass());

    if(convertView == null)
    {
        LayoutParams lp;

        convertView = new RelativeLayout(context);
        //----> serial
        TextView serial = new TextView(context);
        serial.setId(0x01);
        serial.setTextColor(Color.WHITE);
        serial.setGravity(Gravity.CENTER);
        lp = new LayoutParams(parent.getWidth()>>3,(int)(75*coeff_height));
        serial.setLayoutParams(lp);
        serial.setTag("serial");
        ((LinearLayout)convertView).addView(serial);
    }

    //set content
    ((TextView)convertView.findViewWithTag("serial")).setText(""+position);

    return convertView;
}
问题仍然存在

位,如果我更改并使用此代码:

public View getView(int position, View convertView, ViewGroup parent) {

    System.out.println("parent = "+parent.getClass());

    if(convertView == null)
    {
        LayoutParams lp;

        convertView = new TextView(context);
    }

    //set content
    convertView.setText(""+position);

    return convertView;
}
没问题。所有项目都显示正确。问题似乎来自于在第一次调用getView时实例化ViewGroup对象。我将尝试扩展xml布局。但正如我在前面的评论中所说,我需要动态地指定子视图的高度和宽度

诚恳地,
CC

您将文本颜色设置为白色,而我没有找到任何背景颜色,因此可能是白色,为什么要在代码中而不是在xml中创建行?这看起来很糟糕。膨胀xml将使其易于理解和使用debug@vs-塔库:我的行动中有一个蓝色的背景。此外,文本对于其他项(从同一适配器生成)是完全可读的。@Daniel Bo:在xml模板中,我们不能为子视图定义计算的宽度和高度。也许我只是不知道而已。