selector
을 사용하여 ListView
에서 선택한 행을 강조 표시하려고합니다. 언론을 발표 한 후에도 강조 표시가 필요합니다. 강조 표시된 행을 상징하는 것은 선택된 행입니다.선택기가 단편 내부의 ListView에 대해 작동하지 않습니다.
현재 텍스트의 색상은 기본적으로 변경됩니다. 배경색을 변경해야합니다.
DrawerLayout
안에있는 조각에 ListView
이 있습니다. 장치를 선택하면 DrawerLayout
이 닫힙니다. DrawerLayout
을 다시 열면 선택한 장치의 배경이 변경되지 않습니다. 선택한 장치의 텍스트는 배경색이 아닌 다른 색입니다.
나는 여기에 수많은 제안을 시도했으며 그 효과가 아무것도 발견하지 못했습니다. API-17을 대상으로하고 있으며 minsdk는 API-17입니다.
여기 내가 성공하지 못한 몇 가지 게시물이 있습니다. Android ListView selected item stay highlighted
당신이, 덕분에 더 자세한 내용이 필요하면 알려줘 Change background color of selected item on a ListView
- .
device_list_fragment.xml <?xml version="1.0" encoding="utf-8"?> <ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/device_list_view" android:layout_width="match_parent" android:layout_height="match_parent" android:choiceMode="singleChoice" android:background="@drawable/device_selector" > </ListView>
device_selector.xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_activated="true" android:drawable="@drawable/device_selected"/> <item android:drawable="@drawable/device_not_selected"/> </selector>
strings.xml <drawable name="device_selected">#777777</drawable> <drawable name="device_not_selected">#555555</drawable>
DeviceListFragment public class DeviceListFragment extends Fragment implements OnItemClickListener { public View onCreateView(...) { View view = inflater.inflate(R.layout.device_list_fragment, container, false); this.devicesArrayAdapter = new DevicesArrayAdapter(this.getActivity()); this.deviceListView = (ListView) view.findViewById(R.id.device_list_view); this.deviceListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); this.deviceListView.setAdapter(this.devicesArrayAdapter); this.deviceListView.setOnItemClickListener(this); return view; } public void onItemClick(...) { this.deviceListView.setItemChecked(position, true); } }
,536,913,632 : 여기 은 (내가 시도한 마지막에) 내 코드입니다 10DevicesArrayAdapter public class DevicesArrayAdapter extends ArrayAdapter<Device> { public View getView(...) { View rowView = layoutInflater.inflate(R.layout.device_element, parent, false); return rowView; } }
에 나는 선택의 목적은 기반 뷰의 변경 부분에 도움을 줄 알았는데 어떤 유형의 선택을 했습니까? 선택기를 사용하면 변경 사항이 유지되지 않습니다. – prolink007
확인. 나는 이것을했다. 이것이 나를 위해 일하는 유일한 방법은'onItemClick()'메서드에서'myArrayAdapter.notifyDataSetChanged();'를 호출하는 것입니다. 이 올바른지? – prolink007
나는이 솔루션과 비슷한 솔루션을 이미 가지고 있기로 결정했다.정확히 내가 기대했던 것이 아니지만 지금은 효과가있을 것입니다. 고마워. – prolink007