Adapterを使ったListViewにて、ラジオボタンのような挙動をListViewの背景色でできないかと(選択した行の背景色を変え、背景色が変わっている行は背景色を戻す)検討しています。
Clickイベント(下記ListItemAdapter.GetView()内)で選択した行への操作はできるのですが、他の行への操作方法が分かりません。
そもそもやり方が間違っているのか、ご教授お願いいたします。
開発環境:VisualStudio2017pro
Activity.cs OnCreate()内ListView生成部分
var list = new List<ListItem>(); list.Add(new ListItem() { MyText="row1" }); list.Add(new ListItem() { MyText="row2" }); list.Add(new ListItem() { MyText="row3" }); var listView = FindViewById<ListView>(Resource.Id.myListView); listView.Adapter = new ListItemAdapter(this, 0, list);
CustomAdapter
public class ListItemAdapter : ArrayAdapter<ListItem> { private readonly LayoutInflater _layoutInflater; public ListItemAdapter(Context context, int rid, IList<ListItem> list) : base(context, rid, list) { _layoutInflater = (LayoutInflater)context.GetSystemService(Context.LayoutInflaterService); } public override View GetView(int position, View convertView, ViewGroup parent) { var item = GetItem(position); var view = _layoutInflater.Inflate(Resource.Layout.custom_list_view, null); var textView = view.FindViewById<TextView>(Resource.Id.myText); textView.Text = item.MyText; // リスト選択(クリックイベント) view.Click += (sender, e) => { view.SetBackgroundColor(Android.Graphics.Color.Red); // ここで他の行を取得して、背景色を操作したい }; return view; } }
ListItemAdapterから参照するview(custom_list_view.axml)
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#FFDAFF7F" android:padding="8dp"> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="match_parent" android:id="@+id/linearLayout1"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/myText" android:textSize="20dp"/> </LinearLayout> </RelativeLayout >
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/08/29 06:27
2019/08/29 17:12
退会済みユーザー
2019/08/30 09:00