0

조각의 다른 요소가 업데이트되고 listview 및 gridview는 업데이트되지 않습니다. 로그에서 어댑터의 콘텐츠가 변경되는 것을 볼 수 있지만보기를 클릭 할 때만 해당 내용이나 onResume()을 새로 고칩니다. 그들이 새로 고침으로ListView/GridView 내부에서 리프레시되지 않음

나는 이미 adapter.notifyDataSetChanged()와 UIThread, listview.invalidateViews()와 gridview.invalidateViews (에 adapter.notifyDataSetInvalidated()) 또한 requestLayout(), requestFocus를()와은 PerformClick()를 시도 내가보기 영역을 만질 때.

또한 조각을 분리/첨부하려고 시도했습니다.

gridview.setAdapter를 다시 시도하면 내용이 공백으로 표시되고 gridview 영역을 클릭하면 업데이트 된 것으로 표시됩니다.

나는 AndroidAnnotations를 사용하고 있습니다.

@EActivity(R.layout.activity) 
public class MyActivity extends AppCompatActivity { 

@FragmentById 
Fragment1 fragment1; 

@FragmentById 
Fragment2 fragment2; 

void whenSomethingHappens() { 
    fragment1.onChange(); 
    fragment2.onChange(); 
} 
} 

@EFragment(R.layout.fragment1) 
public class Fragment1 extends Fragment { 

@ViewById 
GridView gridView; 

@Bean 
MyAdapter1 adapter1; 

@AfterViews 
void init() { 
    gridView.setAdapter(adapter1); 
} 

void onChange() { 
    adapter1.clear(); 
    adapter1.addAll(elements); // The elements are changed, but not the gridview 
} 
} 

@EFragment(R.layout.fragment2) 
public class Fragment2 extends Fragment { 

@ViewById 
ListView listView; 

@Bean 
MyAdapter2 adapter2; 

@AfterViews 
void init() { 
    listView.setAdapter(adapter2); 
} 

void onChange() { 
    adapter2.clear(); 
    adapter2.addAll(elements); // The elements are changed, but not the listView 
} 
} 

@EBean 
public class Adapter1 extends ArrayAdapter<Model1> { 

@RootContext 
Context context; 

public Adapter1(Context context) { 
    super(context, R.layout.model1_item); 
} 


    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
    Model1Item model1Item; 
    if (convertView == null) { 
     model1Item = Model1Item_.build(context); 
    } else { 
     model1Item = (Model1Item) convertView; 
    } 

    Model1 model1 = getItem(position); 
    model1Item.bind(model1); 
    return model1Item; 
} 
} 

Adapter2는 Adapter1과 동일하지만 모델과 항목이 다릅니다. 항목은 모델을 뷰 요소에 바인딩하는 @ViewGroups입니다.

편집 : 바로 지금, 가장 효과가있는 것은 requestFocusFromTouch()이지만 이상한 느낌입니다.

답변

0

모든 경우에 onChange를 호출하지 않았으며 예상대로 UIThread에서 실행되지 않고 있음을 알 수 있습니다. 코드 변경은 기본적으로 다음과 같습니다.

@UiThread 
void onChange() { 
    adapter.clear(); 
    adapter.addAll(elements); 
}