필자의 경우, 조각을 작업 내에서 탭으로 사용합니다. 조각을 만들 때 정보를로드하려고합니다. 그래서 내가 방법을 호출 한 후, 조각 내부의 목록보기가보기를 업데이트하지 못한 httprequest
을 실행하고 난 다음notifyDataSetChanged가 단편화 된 ListView를 업데이트하지 못했습니다.
mAdapter.notifyDataSetChanged()
이 문제를 오는 전화를 조각 내에서 사용자 정의 핸들러에 다시 그 응답을 넣어의 Runnable를 사용 notifyDataSetChanged()
.
notifyDataSetChanged()
의 호출 후, 어댑터는 방법
getCount()
및
getCount()
제로 이상의 값을 반환 한 전화 않았다는 것을 발견하지만, 어댑터는
getCount()
의 호출 후 그 방법
getView()
를 호출하지 않았다. 당신이 onCreateView 방법 또는 ActivityCreated에 한 OnCreate 코드를 삽입 한
public class ProductReviewFragment extends Fragment {
private View mBackgroundView = null;
private ProductHelper mProductHelper = null;
private PullToRefreshListView mListView = null;
private int pre = 20;
private long mark = 0;
private long productId = 0;
private List<ProductThread> listProductThread = new ArrayList<ListProductReviewResponse.ProductThread>();
private class MyHandler extends Handler{
private ProductReviewFragment mActivity = null;
public MyHandler(ProductReviewFragment activity){
mActivity = activity;
}
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case ProductHelper.GET_PRODUCT_REVIEW_SUCCESS:
ListProductReviewResponse response = (ListProductReviewResponse)msg.obj;
if (response != null) {
if (response.getProductThreadList()!=null) {
mActivity.listProductThread.addAll(response.getProductThreadList());
}
mActivity.mark = response.getMark();
mActivity.mAdapter.notifyDataSetChanged();
}
mActivity.mListView.onRefreshComplete();
if (mActivity.listProductThread.size()>=response.getTotalNumber()) {
mActivity.mListView.setMode(Mode.DISABLED);
}
break;
case ProductHelper.GET_PRODUCT_REVIEW_FAILED:
mActivity.mListView.onRefreshComplete();
if (msg.obj!=null) {
NetWorkException exception = (NetWorkException)msg.obj;
NetWorkException.handlerResultNetWorkNotAvailable(mActivity.getActivity(), exception);
}
default:
break;
}
}
}
private MyHandler mHandler = new MyHandler(this);
private class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
int i = listProductThread.size();
return i;
}
@Override
public Object getItem(int position) {
return listProductThread.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView==null) {
holder = new ViewHolder();
convertView = View.inflate(getActivity(), R.layout.product_review_cell, null);
holder.rivHead = (RoundImageView)convertView.findViewById(R.id.product_comment_head);
holder.tvName = (TextView)convertView.findViewById(R.id.product_comment_user);
holder.tvContent = (TextView)convertView.findViewById(R.id.product_comment_content);
convertView.setTag(holder);
}
holder = (ViewHolder)convertView.getTag();
holder.rivHead.setImageInfo(ImageInfo.obtain(ImageCategories.CATEGORY_ROUND_HEAD, listProductThread.get(position).getUser().getAvatarURL()));
holder.tvName.setText(listProductThread.get(position).getUser().getUserName());
holder.tvContent.setText(listProductThread.get(position).getContent());
return convertView;
}
private class ViewHolder {
RoundImageView rivHead = null;
TextView tvName = null;
TextView tvContent = null;
}
}
private MyAdapter mAdapter = new MyAdapter();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getArguments();
if (bundle!=null) {
productId = bundle.getLong(ProductHelper.PRODUCT_ID);
}
mProductHelper = new ProductHelper(getActivity().getApplicationContext());
mProductHelper.getProductReview(productId, mark, pre, mHandler);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mBackgroundView = inflater.inflate(R.layout.pulltorefresh_list_fragment, null);
return mBackgroundView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
initUI();
}
public void initUI(){
mListView = (PullToRefreshListView) mBackgroundView.findViewById(R.id.fragment_listview);
mListView.setMode(Mode.PULL_FROM_END);
mListView.setAdapter(mAdapter);
}
}
y를 mActivity을 method..because .mAdapter.notifyDataSetChanged() ;? u는 간단하게 adpter.noti를 사용할 수 있습니다 ... 그리고 mAdapter 선언을 볼 수 없습니다. – KOTIOS
mAdapter 선언은 onCreate() – luminos