0

リストビュー アイテムの周囲の境界線を変更しようとしていますが、レイアウトを参照して境界線を変更しようとすると、残念ながら null 参照エラーが発生します。layout.setBackgroundResource(R.drawable.border_purchased);null 参照が発生します。メソッド/コンセプトが欠けている場所はありますか?

アダプターの一部

    @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>
4

2 に答える 2

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);
 }
于 2014-12-08T03:45:50.730 に答える
0

これはlistviewアダプターだとおっしゃいましたがlistview、あなたの に が表示されませんXML...listviewアダプターを使用するには、 に ID のないリストが必要XMLです。これにより、参照できるリストが作成されます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、レイアウトを参照する代わりに試してみてください。

于 2014-12-08T03:47:22.497 に答える