외부에서 ExpandableListView에서 (색상)이 두 조각이있다.수정 자식 요소 어댑터
버튼을 누르면 확장형 목록보기의 하위 요소 중 하나의 색이 변경됩니다. 어떤 부모와 자식 ID가 될지 알게 될 것입니다. 하지만 BaseExpandableListAdapter 대신 Fragment B 클래스에서 자식 요소에 액세스하는 방법.
외부에서 ExpandableListView에서 (색상)이 두 조각이있다.수정 자식 요소 어댑터
버튼을 누르면 확장형 목록보기의 하위 요소 중 하나의 색이 변경됩니다. 어떤 부모와 자식 ID가 될지 알게 될 것입니다. 하지만 BaseExpandableListAdapter 대신 Fragment B 클래스에서 자식 요소에 액세스하는 방법.
자식 요소의 클래스에서 멤버 변수를 만들어 색을 추적합니다. 그런 다음이 새 멤버 변수를 기반으로 자식 요소의 색을 변경하려면 ListAdapter가 필요합니다. 이제 버튼을 누르면이 색상 변수를 변경하고 ListAdapter에서 notifyDataSetChanged()를 호출하면됩니다.
예 : 나는 두 변수 즉, 기본 색상과 새로운 색상을 가지고 :
class ChildElement {
int color;
}
@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
ChildElement e = getItem(position);
ViewHolder holder;
...
holder.view.setBackgroundColor(e.color);
...
}
그런 다음 색상 여기
elements.get(position).color = newColor;
adapter.notifyDataSetChanged();
가 나는 것을 어떻게했는지 방법입니다 변경합니다. getChildView 여기에 코드 조각이 내부 나는 분명히 어댑터 안에 내가 이전 항목의 색상을 다시 변경하는 방법 것
public void setActiveChild(long newID) {
currentlyActiveChild = newID;
notifyDataSetChanged();
}
유일한 질문이
를 사용합니다. 나는 'notifyDataSetChanged();'라고 생각했다. 트릭을 할 것이지만 불행히도 나는 두 가지 항목을 수정했다. – TommyLeeJones이렇게 할 수있는 한 가지 방법은 모든 요소를 반복하고 모든 색상을 다시 설정하는 것입니다. 그런 다음 원하는 요소의 색상을 설정하십시오. 또 다른 방법은 색상을 설정 한 마지막 요소를 기억하고 새 요소의 색상을 설정할 때마다 마지막 요소를 재설정하는 것입니다. – idunnololz