조각의 다른 요소가 업데이트되고 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()이지만 이상한 느낌입니다.