私はアンドロイドの新人です。
データベースからデータを取得し、リストビューに表示しました..
次に、各アイテムの背景色を設定したいと思います。
つまり、データベースからデータを取得します。ここでは、ステータスのような 1 つのフィールドがあります。
ステータスが 1 の場合、アイテムの色は緑に変わります。
お気に入り
これどうやってするの。
可能です。私を助けてください。
よろしくお願いします。
私はアンドロイドの新人です。
データベースからデータを取得し、リストビューに表示しました..
次に、各アイテムの背景色を設定したいと思います。
つまり、データベースからデータを取得します。ここでは、ステータスのような 1 つのフィールドがあります。
ステータスが 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>