길고 짧은 두 개의 목록이 있습니다. 긴 목록 만 표시되고 짧은 목록에도있는 긴 목록의 목록 항목에는 파란색 backgroundColor가 표시됩니다. 짐작할 수 있듯이, 이것은 효과가 없습니다.ListView 항목은 onCreate의 backgroundColor를 변경하지 않지만 onItemClick을 수행합니다.
그 외에도 onItemClick 항목의 backgroundColor를 변경할 수 있습니다. 나는 경우 문 작품, 나는 텍스트 뷰에 뷰를 캐스팅 축배의 텍스트를 보여 것을 알고
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_couple_file);
List<String> longList = new ArrayList<String>();
longList.add("A");
longList.add("B");
List<String> shortList = new ArrayList<String>();
longList.add("A");
// display longList
ListView list = (ListView) findViewById(R.id.list);
ArrayAdapter<String> listAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, longList);
list.setAdapter(listAdapter);
// look for common elements
for (int i = 0; i < longList.size(); i++) {
if (shortList.contains(longList.get(i))) {
View view = listAdapter.getView(i, null, list);
// should change the item view's color, but it doesn't
view.setBackgroundResource(R.color.blue);
}
}
registerClick();
}
private void registerClick() {
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View viewClicked, int position, long id) {
// however, this does change the item view's color
viewClicked.setBackgroundResource(R.color.red);
}
}
(이 작동합니다).
이 작업을 수행하는 데는 다른 옵션이있을 수 있지만 "A"항목의 backgroundColor가 onCreate를 변경하지 않는 이유는 알고 싶습니다 (어느 쪽도 충돌하지 않음). onItemClickListener.
편집 : 내가 (I 논리적 내 원래의 코드에서이 같이)는, setAdapter 부분의 위치와 경우 문을 전환하고, 안드로이드 스튜디오에서 알 수 있듯이 setBackgroundResource을 사용하지만, 이것이 해결되지 않는 한 문제.
simple_list_item_1의 배경색을 사용하고 있기 때문에 생각합니다. 어댑터를 실행할 때까지는 설정되지 않습니다. 어댑터에서 처리되는 동안 어댑터를 변경하십시오. 또는 어댑터가 항목을 표시 한 후에 변경할 항목을 찾아서 수행 할 수 있습니다. –