1

私はアンドロイドの新人です。

データベースからデータを取得し、リストビューに表示しました..

次に、各アイテムの背景色を設定したいと思います。

つまり、データベースからデータを取得します。ここでは、ステータスのような 1 つのフィールドがあります。

ステータスが 1 の場合、アイテムの色は緑に変わります。

お気に入り

リストビューを表示

これどうやってするの。

可能です。私を助けてください。

よろしくお願いします。

4

5 に答える 5

1

アダプタの getView() メソッド内で、次のように量に基づいてバックグラウンド リソースを設定できます。

// assume view is your item view, status the number, and you have a context
if(status  == 1){
    view.setBackgroundColor(context.getResources().getColor(R.color.green));
} else {
    view.setBackgroundColor(context.getResources().getColor(R.color.red));
}

次に、次の内容を含むファイル colors.xml を作成して、リソースでこれらの色を定義する必要があります。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="red">#ff0000</color>
    <color name="green">#00ff00</color>
</resources>

アイテムがクリック可能な場合、ユーザーがクリックしたときにフィードバックを提供することが重要です。この場合、ステート リスト drawableを使用する必要があります。


コメント後に編集します。Item に名前とステータスが含まれていると仮定すると、アダプタは次のようになります。

public class MyArrayAdapter extends ArrayAdapter<Item> {

    private final Context context;

    public MyArrayAdapter(Context context, int textViewResourceId, Item[] objects) {
        super(context, textViewResourceId, objects);
        this.context = context;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if(convertView == null){
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.list_item, parent, false);

            holder = new ViewHolder();
            holder.container = (LinearLayout) convertView.findViewById(R.id.container);
            holder.name = (TextView) convertView.findViewById(R.id.name);
            holder.status = (TextView) convertView.findViewById(R.id.status);

            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.name.setText(getItem(position).name);
        holder.status.setText(getItem(position).status);

        Item item = getItem(position);
        if(item.status  == 1){
            holder.container.setBackgroundColor(context.getResources().getColor(R.color.green));
        } else {
            holder.container.setBackgroundColor(context.getResources().getColor(R.color.red));
        }

        return convertView;
    }

    private class ViewHolder {
        public TextView name;
        public TextView status;
        public LinearLayout container;
    }
}

次に、list_item.xml レイアウトは次のようになります。

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="0px"
    android:layout_height="wrap_content"
    android:id="@+id/container">

    <TextView
        android:layout_width="0px"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:id="@+id/name" />

    <TextView
        android:layout_width="0px"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:id="@+id/status" />

</LinearLayout>
于 2013-10-24T10:58:00.980 に答える