0

リスト ビューで画像を変更しようとすると問題が発生します。

以下は、リスト内の行のレイアウト XML です。

<?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="?android:attr/listPreferredItemHeight"
android:orientation="horizontal" 
android:gravity="left">


<ImageView
    android:id="@+id/flagIcon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_weight="0.1"
    android:src="@drawable/orange_flag"/>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:gravity="center_vertical"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/location_row_item_main_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/location_row_item_secondary_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" 
        android:textAppearance="?android:attr/textAppearanceSmall"/>

</LinearLayout>

正常に実行され、記述されたドローアブル (つまり、orange_flag) が表示されますが、次のコードで変更しようとしても、これは変わりません。

private class MyListAdapter extends ResourceCursorAdapter { 

    // In your ListActivity class, create a new inner class that extends ResourceCursorAdapter. 
    //This inner class is the custom CursorAdapter we will use to manage how data is bound to a list item:

    public MyListAdapter(Context context, Cursor cursor) { 
        super(context, R.layout.row_location, cursor);
    } 

    @Override
    public void bindView(View view, Context context, Cursor cursor) { 
        TextView title = (TextView) view.findViewById(R.id.location_row_item_main_text);
        title.setText(cursor.getString(
                cursor.getColumnIndex(RMDbAdapter.RACKING_SYSTEM)));
        ImageView flagIcon = (ImageView) view.findViewById(R.id.flagIcon);
        String risk = cursor.getString(cursor.getColumnIndex(RMDbAdapter.RISK));
        if (risk == "Red Risk"){
            flagIcon.setImageResource(R.drawable.red_flag);
        }
        else if (risk == "Green Risk"){
            flagIcon.setImageResource(R.drawable.green_flag);
        }
        else if (risk =="No Risk"){
            flagIcon.setImageResource(R.drawable.note);
        }

何か案は?!

4

3 に答える 3

1

コンテンツの String データ型を比較す​​る場合は、常にequals()orを使用します。equalsIgnoreCase()

Java の文字列の場合:

  • ==文字列が同じオブジェクトかどうかを比較します。
  • equals()文字列に同じ文字列があるかどうかを比較します。
于 2012-10-11T17:24:43.500 に答える
0

flagIcon.invalidate()リソースを設定した後に追加してみてください。

于 2012-10-11T16:23:47.530 に答える
0

しようとする代わりに

flagIcon.setImageResource(R.drawable.red_flag);

これを試すことができます:

flagIcon.setBackgroundResource(R.drawable.red_flag);
于 2012-10-11T16:56:00.463 に答える