Java 没有显示我所有的文本视图

Java 没有显示我所有的文本视图,java,android,xml,Java,Android,Xml,我有一个ListViewAdapter.java,它看起来像: ListViewAdapter.java public class ListViewItem { public final Drawable icon; // the drawable for the ListView item ImageView public final String title; // the text for the ListView item title p

我有一个
ListViewAdapter.java
,它看起来像:

ListViewAdapter.java

public class ListViewItem {
    public final Drawable icon;       // the drawable for the ListView item ImageView
    public final String title;       // the text for the ListView item title
    public final String precio;      // the price for the ListView item
    public final String descuento;   // the price for the discount for the ListView item
     // the text for the ListView item description

    public ListViewItem(Drawable icon, String title, String precio, String descuento) {
        this.icon = icon;
        this.title = title;

        this.precio = precio;
        this.descuento = descuento;
    }
}
当我在我的片段上创建ListView时,没有说任何错误。。。代码是:

 // initialize the items list
    mItems = new ArrayList<ListViewItem>();
    Resources resources = getResources();

    mItems.add(new ListViewItem(resources.getDrawable(R.drawable.tomate_oferta), getString(R.string.aim), getString(R.string.aim_precio), getString(R.string.aim_descuento)));
    mItems.add(new ListViewItem(resources.getDrawable(R.drawable.levadura_oferta), getString(R.string.youtube), getString(R.string.youtube_precio), getString(R.string.youtube_descuento)));
    mItems.add(new ListViewItem(resources.getDrawable(R.drawable.sopa_oferta), getString(R.string.bebo), getString(R.string.bebo_precio), getString(R.string.bebo_descuento)));
    mItems.add(new ListViewItem(resources.getDrawable(R.drawable.zumo_oferta), getString(R.string.pew), getString(R.string.pew_precio), getString(R.string.pew_descuento)));

    // initialize and set the list adapter
    setListAdapter(new ListViewDemoAdapter(getActivity(), mItems));
}
//初始化项目列表
mItems=新的ArrayList();
Resources=getResources();
添加(新的ListViewItem(resources.getDrawable(R.drawable.tomate_of erta)、getString(R.string.aim)、getString(R.string.aim_precio)、getString(R.string.aim_Descento));
添加(新的ListViewItem(resources.getDrawable(R.drawable.levadura_of erta)、getString(R.string.youtube)、getString(R.string.youtube_precio)、getString(R.string.youtube_Descento));
添加(新的ListViewItem(resources.getDrawable(R.drawable.sopa_of erta)、getString(R.string.bebo)、getString(R.string.bebo_precio)、getString(R.string.bebo_Descento));
添加(新的ListViewItem(resources.getDrawable(R.drawable.zumo_of erta)、getString(R.string.pew)、getString(R.string.pew_precio)、getString(R.string.pew_descento));
//初始化并设置列表适配器
setListAdapter(新的ListViewDemoAdapter(getActivity(),mItems));
}
最后,我的xml看起来像:

    ListViewItem.xml

        <?xml version="1.0" encoding="utf-8"?>
<!-- the parent view - provides the gray background -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:gravity="center_vertical"
    android:background="@color/frame_background"
    android:padding="5dp" >

    <!-- the innner view - provides the white rectangle -->
    <RelativeLayout android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/frame" >

        <!-- the icon view -->
        <ImageView android:id="@+id/ivIcon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="5dp"
            android:contentDescription="@string/icon_content_description"
            android:scaleType="fitXY"
            android:layout_alignParentLeft="true" />

        <!-- the container view for the title and description -->
        <RelativeLayout android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/ivIcon"
            android:layout_centerVertical="true" >

            <!-- the title view -->
            <TextView android:id="@+id/tvTitle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="#0000FF"
                android:textAppearance="@android:style/TextAppearance.Medium" />

            <!-- the description view -->
            <TextView android:id="@+id/tvDiscount"
                android:layout_below="@id/tvTitle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="#FF0000"
                android:textSize="12dp"
                android:textAppearance="@android:style/TextAppearance.Small" />
            <TextView android:id="@+id/tvPrice"
                android:layout_below="@id/tvTitle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="#FF0000"
                android:textAppearance="@android:style/TextAppearance.Small" />

        </RelativeLayout>

    </RelativeLayout>

</RelativeLayout>
ListViewItem.xml
ListViewDemoAdapter.java

     public class ListViewDemoAdapter extends ArrayAdapter<ListViewItem> {

    public ListViewDemoAdapter(Context context, List<ListViewItem> items) {
        super(context, R.layout.listview_item, items);
    }

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

        if(convertView == null) {
            // inflate the GridView item layout
            LayoutInflater inflater = LayoutInflater.from(getContext());
            convertView = inflater.inflate(R.layout.listview_item, parent, false);

            // initialize the view holder
            viewHolder = new ViewHolder();
            viewHolder.ivIcon = (ImageView) convertView.findViewById(R.id.ivIcon);
            viewHolder.tvTitle = (TextView) convertView.findViewById(R.id.tvTitle);
            viewHolder.tvPrice = (TextView) convertView.findViewById(R.id.tvPrice);
            viewHolder.tvDiscount = (TextView) convertView.findViewById(R.id.tvPrice);
            convertView.setTag(viewHolder);
        } else {
            // recycle the already inflated view
            viewHolder = (ViewHolder) convertView.getTag();
        }

        // update the item view
        ListViewItem item = getItem(position);
        viewHolder.ivIcon.setImageDrawable(item.icon);
        viewHolder.tvTitle.setText(item.title);
        viewHolder.tvDiscount.setText(item.descuento);
        viewHolder.tvPrice.setText(item.precio);


        return convertView;
    }


    private static class ViewHolder {
        ImageView ivIcon;
        TextView tvTitle;
        TextView tvDiscount;
        TextView tvPrice;
    }
}
公共类ListViewDemoAdapter扩展了ArrayAdapter{
公共ListViewDemoAdapter(上下文、列表项){
super(上下文、R.layout.listview_项、项);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
持票人持票人;
if(convertView==null){
//展开GridView项布局
LayoutInflater充气器=LayoutInflater.from(getContext());
convertView=充气机。充气(R.layout.listview_项,父项,false);
//初始化视图保持架
viewHolder=新的viewHolder();
viewHolder.ivIcon=(ImageView)convertView.findViewById(R.id.ivIcon);
viewHolder.tvTitle=(TextView)convertView.findViewById(R.id.tvTitle);
viewHolder.tvPrice=(TextView)convertView.findViewById(R.id.tvPrice);
viewHolder.tvDiscount=(TextView)convertView.findViewById(R.id.tvPrice);
convertView.setTag(viewHolder);
}否则{
//回收已膨胀的视图
viewHolder=(viewHolder)convertView.getTag();
}
//更新项目视图
ListViewItem=getItem(位置);
viewHolder.ivIcon.setImageDrawable(item.icon);
viewHolder.tvTitle.setText(item.title);
viewHolder.tvDiscount.setText(item.descumento);
viewHolder.tvPrice.setText(item.precio);
返回视图;
}
私有静态类视图持有者{
ImageView-ivIcon;
文本视图标题;
TextView电视折扣;
文本视图价格;
}
}
结果:

我不明白我做错了什么。。。我想主要的问题在
XML
上,但我不知道在哪里


希望你们能帮我。谢谢。

您的问题似乎出在布局中\u以下属性:

每个文本视图都设置在下面的布局_=“@id/tvTitle”,但是其他文本视图都被tvPrice隐藏。你必须这样改变:

     <!-- the title view -->
        <TextView android:id="@+id/tvTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#0000FF"
            android:textAppearance="@android:style/TextAppearance.Medium" />

        <!-- the description view -->
        <TextView android:id="@+id/tvDiscount"
            android:layout_below="@id/tvTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#FF0000"
            android:textSize="12dp"
            android:textAppearance="@android:style/TextAppearance.Small" />
        <TextView android:id="@+id/tvPrice"
            android:layout_below="@id/tvDiscount"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#FF0000"
            android:textAppearance="@android:style/TextAppearance.Small" />
您必须将其更改为:

      viewHolder.tvDiscount = (TextView) convertView.findViewById(R.id.tvDiscount);
我看到两个错误:

首先是在布局上,tvprice和tvdiscount重叠显示

        <!-- the description view -->
        <TextView android:id="@+id/tvDiscount"
            android:layout_below="@id/tvTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#FF0000"
            android:textSize="12dp"
            android:textAppearance="@android:style/TextAppearance.Small" />
        <TextView android:id="@+id/tvPrice"
            android:layout_below="@id/tvDiscount"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#FF0000"
            android:textAppearance="@android:style/TextAppearance.Small" />

另一个问题是viewHolder.tvDiscount指向tvPrice,更正如下:

viewHolder.tvDiscount = (TextView) convertView.findViewById(R.id.tvDiscount);

将xml更改为此格式。使用@+id/tvTitle而不是@id/tvTitle



发布您的适配器代码您不需要回答任何问题。。。告诉我们哪些是未显示的文本视图。以及它们在设备中的显示方式。我说,它只显示ImageView、tvTitle和tvPrice。@PramodYadav我的listViewDemoAdapter现在在文章中。发布您想要的n当前结果图像…我看到您仍然提供基于猜测的答案。好吧,我仍然在这里投票否决这些,并为其提供理由(你永远不会这么做):@+id/tvTitle每次都会创建一个新的id,在属性下面的布局中使用@+id是完全错误的。只有在使用TVTILITE id来定位其他视图后,计划使用TVTILITE id定义视图时,才可以使用它。停止猜测,避免否决票…@2Dee。。。终于有人明白了:)你是什么意思@2Dee@Joan我的评论是在Vivek被问到的。不要使用他的答案(或他提供的任何其他答案),他提供的答案不是第一次只是猜测,而且是一个坏的答案,实施坏的做法并误导人们……第一个错误是真的,我错了,但第二个是复制粘贴失败:我看到了,实际上它不起作用。。。它仍然只显示图像、标题和折扣…发生了什么?你写的很好,你改变了什么吗?看我的编辑。也许这是另一个问题。但是xml是绝对错误的,所以就像我说的那样更改它。
    // update the item view
    ListViewItem item = getItem(position);
    viewHolder.ivIcon.setImageDrawable(item.icon);
    viewHolder.tvTitle.setText(item.title);
    viewHolder.tvPrice.setText(item.precio);
    viewHolder.tvDiscount.setText(item.descuento);
viewHolder.tvDiscount = (TextView) convertView.findViewById(R.id.tvDiscount);
<!-- the innner view - provides the white rectangle -->
<RelativeLayout android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/frame" >

    <!-- the icon view -->
    <ImageView android:id="@+id/ivIcon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="5dp"
        android:contentDescription="@string/icon_content_description"
        android:scaleType="fitXY"
        android:layout_alignParentLeft="true" />

    <!-- the container view for the title and description -->
    <RelativeLayout android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/ivIcon"
        android:layout_centerVertical="true" >

        <!-- the title view -->
        <TextView android:id="@+id/tvTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#0000FF"
            android:textAppearance="@android:style/TextAppearance.Medium" />

        <!-- the description view -->
        <TextView android:id="@+id/tvDiscount"
            android:layout_below="@+id/tvTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#FF0000"
            android:textSize="12dp"
            android:textAppearance="@android:style/TextAppearance.Small" />
        <TextView android:id="@+id/tvPrice"
            android:layout_below="@+id/tvTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#FF0000"
            android:textAppearance="@android:style/TextAppearance.Small" />

    </RelativeLayout>

</RelativeLayout>