그래서 목록 뷰가 있고 외부 데이터베이스에서 데이터를 가져옵니다. 처음으로 20 개의 항목을 갖고 싶습니다. 사용자가 아래로 스크롤하면 다른 20 개의 항목이로드됩니다. 난 또 20 목록에 하나 notifyDataSetChanged()
.. 기능은 잘 동작을 추가 할 수 있도록로드 기능에 리스트 뷰가로드 기능을 추가로 구현할 때 올바르게 작동하지 않습니다.
class ItemAdapter extends BaseAdapter {
private ArrayList<Item> objects;
private class ViewHolder {
public TextView text_tt;
}
@Override
public int getCount() {
return SIZE;
//return 9;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View v = convertView;
final ViewHolder viewHolder;
if (v == null) {
LayoutInflater inflater = (LayoutInflater) getActivity().getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.list_item, null);
viewHolder = new ViewHolder();
viewHolder.text_tt = (TextView) v.findViewById(R.id.toptext);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
if(position==getCount()-1){
LoadMore(); //asynctask - load other 20
}
return v;
}
}
내가 미리 읽기 JSON 데이터를 파싱하지만 부작용 가지고 약 50 % 아이템 클릭에 대한 인식 시간. 아래로 스크롤하여 다음 20 개 항목을 받지만 항목을 클릭 할 수는 없습니다. 하지만 예를 들어 활동을 변경하고 목록보기로 돌아 가면 작동합니다. 왜? 감사합니다.
더 많은 항목을로드 할 때를 감지하려면 listview 메소드를 사용해야합니다. listview의 스크롤 리스너를 추가합니다. 마지막 스크롤 위치에 도달했는지 확인한 다음 LoadMore()를 호출하십시오. getView에서 LoadMore를 호출하지 마십시오. 나는 listview의 플라이급 패턴에 대해 읽어야한다고 생각한다. 각 데이터에 대해 목록 뷰에 대해 새 항목이 작성되었다고 생각하고 있습니다. 위의 코드는 확실히 성가신 코드입니다. –
조언을 주셔서 감사합니다. 저는 vikram이 지금까지 작동하는 예제를 보여준 것 같아요. 나는 stackoverflow에 내 방법을 보았지만, 나는 이것이 나쁜 접근 이었다는 것을 알지 못했다. –