0

ListActivity にリンクされた ListView の ViewImage で奇妙な動作が発生します。

そのため、リストが 3 つのテキスト フィールドと 1 つの画像で構成されるリスト アクティビティがあります。

 <TextView android:id="@+id/me_games_won"
     android:textSize="16sp"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"/>

<TextView android:id="@+id/gamesmate_username"
     android:textSize="16sp"
     android:textStyle="bold"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"/>

 <TextView android:id="@+id/him_games_won"
     android:textSize="16sp"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"/>

 <ImageView
    android:id="@+id/imageActionHomepage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/im_completed" />
</LinearLayout>

私のアダプターは、いくつかの基準に基づいて画像を変更しようとしています。次のコードがあります。

public View getView(int position, View convertView, ViewGroup parent) {
        // assign the view we are converting to a local variable

        View v;

        LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = inflater.inflate(R.layout.homepage_listitem, null);

        /*
         * Recall that the variable position is sent in as an argument to this method.
         * The variable simply refers to the position of the current object in the list. (The ArrayAdapter
         * iterates through the list we sent it)
         * 
         * Therefore, i refers to the current Item object.
         */
        JSONGame i = (JSONGame) objects.get(position);

        if (i != null) {
            // This is how you obtain a reference to the TextViews.
            // These TextViews are created in the XML files we defined.
            TextView tt = (TextView) v.findViewById(R.id.me_games_won);
            TextView ttd = (TextView) v.findViewById(R.id.gamesmate_username);
            TextView mt = (TextView) v.findViewById(R.id.him_games_won);
            ImageView iv = (ImageView) v.findViewById(R.id.imageActionHomepage);

            // check to see if each individual textview is null.
            // if not, assign some text!
            if (tt != null) {
                tt.setText(Long.toString(i.getScore()));
            }
            if (ttd != null) {
                ttd.setText(i.getGamemateUsername());
            }
            if (mt != null) {
                mt.setText(Long.toString(i.getGamemateScore()));
            }
            if (i.getAction().equals(JSONGame.GAME_NONE))
                iv.setImageResource(R.drawable.im_completed);
            else if (i.getAction().equals(JSONGame.GAME_ACCEPT)) {
                iv.setOnClickListener(new HomepageMenuAdapter(this.activity, position, R.drawable.im_accept));
                iv.setImageResource(R.drawable.im_accept);
            } else if (i.getAction().equals(JSONGame.GAME_WAITING))
                iv.setImageResource(R.drawable.im_awaiting);
            else
                iv.setOnClickListener(new HomepageMenuAdapter(this.activity, position, R.drawable.im_continue));
                iv.setImageResource(R.drawable.im_continue);
        }

        // the view must be returned to our activity
        return v;
    }

リスト ボックスに表示される画像はランダムですが、多くの場合、最後の行と同じです。行の新しいインスタンスが確実に作成されるように、毎回行を膨張させます。レイアウトファイルに設定された画像以外に表示される画像です。

乾杯。デビッド。

4

1 に答える 1

2

else最後のセグメントのブレースが欠落しているようです:

    :
    } else if (i.getAction().equals(JSONGame.GAME_WAITING))
            iv.setImageResource(R.drawable.im_awaiting);
    else { // <-- missing
            iv.setOnClickListener(new HomepageMenuAdapter(this.activity, position, R.drawable.im_continue));
            iv.setImageResource(R.drawable.im_continue);
    } // <-- missing
    :
于 2012-10-12T16:07:11.697 に答える