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>