ListView 에서 BaseAdapter 를 사용 하여 어 울 립 니 다.

우선 저 는 Adapter 나 BaseAdapter 를 사용 하지 않 고 어 울 리 지 않 으 면 어떤 효 과 를 얻 을 수 있다 는 것 을 부인 하지 않 습 니 다.
하지만 우리 리 스 뷰 의 아 이 템 이 많아 지면 많은 번 거 로 움 이 생 길 수 있 습 니 다.그리고 만약 에 우리 가 어떤 조작 을 하려 면 예 를 들 어 클릭 조작 을 해 야 한 다 는 문 제 를 생각해 본 적 이 있 습 니까?이렇게 되면 반드시 매우 번 거 로 울 것 이다.그래서 우 리 는 어댑터 를 사용 해서 어 울 리 는 또 다른 좋 은 방법 을 시도 해 볼 수 있다.모든 Adapter 에서 개인 은 BaseAdapter 를 비교적 마음 에 들 어 합 니 다.ListAdapter 같은 Adapter 처럼 제한 되 지 않 습 니 다.자,이 BaseAdapter 에 대해 말씀 드 리 겠 습 니 다.
이것 은 getCount()의 추상 적 인 방법 이 있 습 니 다.이 방법 은 현재 BaseAdapter 가 몇 개의 데 이 터 를 불 러 와 야 하 는 지 설명 하 는 것 입 니 다.
@Override
    public int getCount() {
    	if (mModels != null) {
			return mModels.size();
		}
        return 0;
    }

위의 코드 에서 mModels 의 정 의 는 다음 과 같다.
private ArrayList mModels;

그래서 위 에서 우리 가 다시 쓴 getCount()방법 은 mModels 의 크기 입 니 다.왜냐하면 우 리 는 모든 Eye WebsiteModel 에 적합 해 야 하기 때 문 입 니 다.
getItem(int position)과 getItemId(int position)는 더 이상 할 말 이 없습니다.포 인 트 는 getView(int position,View view,View Group parent)입 니 다.말 그대로 getView 는 하나의 View 를 얻 는 것 입 니 다.하나의 View 라면 이 View 는 방법의 두 번 째 매개 변수 에서 들 어 옵 니 다.그리고 우 리 는 방법 에서 이 View 에 대해 우리 가 필요 로 하 는 조작 을 합 니 다.예 를 들 어 이름 을 바 꾸 는 것 입 니 다.View 를 다 받 았 기 때문에 어떻게 조작 하 시 겠 습 니까?아니면 생각 하 시 는 대로 하 시 겠 습 니까?
저 는 지금 여기 서 Adapter 에서 흔히 볼 수 있 는 방법 을 소개 합 니 다.그것 은 바로 우리 View 가 불 러 오지 않 았 을 때 불 러 오 는 것 입 니 다.이미 불 러 왔 다 면 이 View 를 얻 으 러 가 는 것 입 니 다.
여러분 은 아래 의 이 몇 줄 의 코드 를 보 실 수 있 습 니 다.
private class ViewHolder {
        public TextView mSerialTextView = null;
        public TextView mWebSiteTextView = null;
        
        public ViewHolder(View v) {
            mSerialTextView = (TextView) v.findViewById(R.id.fragment_eye_data_select_list_item_serial_textview);
            mWebSiteTextView = (TextView) v.findViewById(R.id.fragment_eye_data_select_list_item_website_textview);
        }
    }

여기 서 이 View Holder 류 는 버퍼 역할 을 한다.우 리 는 getView()방법 에서 이 View Holder 류 를 조작 하 는 것 입 니 다.다음 과 같다.
@Override
    public View getView(int position, View view, ViewGroup parent) {
        ViewHolder viewHolder = null;
        if (view == null || view.getTag() == null) {
            view = mLayoutInflater.inflate(R.layout.fragment_eye_data_select_list_item_layout, null);
            viewHolder = new ViewHolder(view);
            view.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) view.getTag();
        }
        EyeWebSiteModel model = mModels.get(position);
        viewHolder.mSerialTextView.setText("" + (position + 1));
        viewHolder.mWebSiteTextView.setText(model.getmWebsite());
        
        return view;
    }

그리고 Fragment 나 Activity 에서 어 울 리 는 과정 도 간단 합 니 다.
ListView selectListView = (ListView) v.findViewById(R.id.fragment_eye_data_select_listview);
        final ArrayList models = EyeSelectDataListFragmentMBLL.getMergeWebSiteModelsAll(getActivity());
        if (models == null) {
            return v;
        }
        EyeSelectDataListFragmentAdapter adapter = new EyeSelectDataListFragmentAdapter(getActivity(), models);
        selectListView.setAdapter(adapter);

구체 적 인 실현 과정(EyeSelectDataListFragment.java 와 EyeSelectDataListFragment Adapter.java)을 참고 할 수 있 습 니 다.링크 를 열 려 면 클릭 하 십시오.

좋은 웹페이지 즐겨찾기