我正在尝试更改listview项周围的边框,不幸的是,当我尝试引用布局来更改边框时,我得到空引用错误。 layout.setBackgroundResource(R.drawable.border_purchased);
导致空引用。我知道哪里缺少一个方法/概念?
适配器的一部分
@Override
public View getItemView(Item object, View v, ViewGroup parent) {
if (v == null)
{
v = View.inflate(getContext(), R.layout.listview_itempage, null);
}
super.getItemView(object, v, parent);
TextView itemTextView = (TextView) v.findViewById(R.id.textViewItemName);
itemTextView.setText(object.getItemName());
if(object.getPurchasedStatus() == true)
{
RelativeLayout layout = (RelativeLayout) v.findViewById(R.id.itemListBorder);
layout.setBackgroundResource(R.drawable.border_purchased);
}
if(object.getRejectReason() != null)
{
RelativeLayout layout = (RelativeLayout) v.findViewById(R.id.itemListBorder);
layout.setBackgroundResource(R.drawable.border_reject);
}
return v;
}
布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:gravity="center_vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="90dp"
android:orientation="vertical"
android:id="@+id/itemListBorder"
android:background="@drawable/border_main"
>
<com.parse.ParseImageView
android:id="@+id/imgStore"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"/>
<TextView
android:id="@+id/textViewStoreTitle"
android:textSize="30dp"
android:textColor="#FFFFFF"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:layout_alignParentRight="true"/>
<TextView
android:id="@+id/textViewStoreItemCount"
android:textSize="15dp"
android:textColor="#FFFFFF"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="0 items"
android:layout_below="@id/textViewStoreTitle"/>
</RelativeLayout>
</LinearLayout>
答案 0 :(得分:0)
在给视图充气时,你没有通过父母:
if (v == null)
{
v = View.inflate(getContext(), R.layout.listview_itempage, null);
}
if (v == null)
{
v = View.inflate(getContext(), R.layout.listview_itempage, parent);
}
答案 1 :(得分:0)
您提到这是listview
适配器,但我在listview
中未看到XML
...为了使用listview
适配器,您必须在XML
中有一个没有ID的列表。这将创建一个可由android.R.id.list
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
从那里你应该可以说
v.setBackgroundResource(R.drawable.border_purchased);
更改背景可绘制。
如果我错了并且您实际上不需要listview
这种情况,您仍应尝试v.setBackgroundResource
而不是引用您的布局。