배 고 픈 가 주문 창 ListView 연동 의 실현

4653 단어 listview연동
지난 글 에서 소개 해 드 렸 습 니 다배 고 픈 거 같 아 요?주문 창 두 개 ListView 연동 효과.
주로 2 개의 ListView 가 어떻게 상호 관 계 를 실현 하 는 지 를 실현 했다.마침 지난 블 로그 review 에서 ListView 컨트롤 이 일반적인 사용 을 했 기 때문에 본 블 로 그 는 주로 대신 의 그 블 로그 의 실현 에 대해 코드 층 의 분석 을 실시 했다.
한편,자신 을 편리 하 게 하고 앞으로 의 코드 실현 에 참고 하 세 요.한편,갓 입문 한 안 드 로 이 드 초보 들 이 함께 공부 할 수 있 도록 제공 된다.
2.최종 효과 도

위의 그림 과 같이 효과 도 는 배 고 픈 것 을 모방 하여 주문 한 인터페이스의 ListView 등급 연결 이다.
3.ListView 등급 연결 을 실현 하 는 어려움
구분 하기 위해 본 논문 에서 왼쪽 에 있 는 ListView 를 MenuListView 라 고 부 르 고 오른쪽 에 있 는 ListView 를 ItemListView 라 고 부른다.
1.두 개의 ListView 가 전체 Activity 에서 의 Layout 레이아웃 문제
2.MenuListView 의 item 을 수 동 으로 클릭 하고,ItemListView 는 이와 관련 된 디 스 플레이 를 어떻게 터치 합 니까?
예 를 들 어 MenuListView 의'신제품 세트'를 클릭 하면 오른쪽 에 있 는 ItemListView 의 getView 는 신제품 세트 의 내용 을 어떻게 표시 합 니까?
3.아 이 템 ListView 를 수 동 으로 미 끄 러 뜨 릴 때,MenuListView 가 현재 클릭 항목 과 어떻게 연 결 됩 니까?
수 동 으로 아 이 템 ListView 가'음료 류'일 때 왼쪽 에 있 는 MenuListView 의 현재 클릭 아 이 템 은 음료 류,즉 배경 색 이 흰색 으로 표 시 됩 니 다.
4.코드 구현
1.ListView 의 레이아웃 문제
이 캡 처 를 보 았 을 때 가장 먼저 생각 나 는 것 은 가중치 로 표시 하 는 것 입 니 다.즉,Android:layot 입 니 다.weight
첫 시도

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
>
<ListView
android:id="@+id/lv_menu"
android:layout_weight="1"
android:layout_height="match_parent"
android:layout_width="wrap_content" />
<ListView
android:id="@+id/lv_item"
android:layout_height="match_parent"
android:layout_weight="2"
android:layout_width="wrap_content" />
</LinearLayout>
효과 그림 은 다음 과 같 습 니 다.

두 번 째 시도,android:layotwidth="wrap_content"android:layot 로 변경width="0dp"
필요 에 따라 표시 할 수 있 습 니 다.
2.MenuListView 의 item 을 수 동 으로 클릭 하고,ItemListView 는 이와 관련 된 디 스 플레이 를 어떻게 터치 합 니까?
MenuListView 와 ItemListView 의 관련 디 스 플레이 는 주로 listView 자체 함수 setSelection()을 통 해 연 결 됩 니 다.
예 를 들 어 MenuListView 가 i 항 을 표시 할 때 ItemListView 는 i 값 에 따라 i 항의 첫 번 째 값 과 연 결 된 다음 에 현재 setSelection 으로 설정 합 니 다.
코드 의 실현 은 다음 과 같다.
MenuListView 의 item 을 감청 합 니 다.

mListMenu.setOnItemClickListener(new ListView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//        i 
mMenuAdapter.setSelectItem(i);
mMenuAdapter.notifyDataSetInvalidated();//
//  ItemListView     i     item
mListItem.setSelection(mTitleList.get(i));
}
});
i 항의 첫 번 째 item 획득 은 다음 과 같은 코드 를 통 해 이 루어 집 니 다.

mTitleList = new ArrayList<Integer>();
//    item.size(),      title            ,       item   size   
for (int i=0;i<mfoodDatas.size();i++){
  if (i==0){
  mTitleList.add(i);
}else if(!TextUtils.equals(mfoodDatas.get(i).getTitle(),mfoodDatas.get(i-1).getTitle())){
mTitleList.add(i);
}
}
3.아 이 템 ListView 를 수 동 으로 미 끄 러 뜨 릴 때,MenuListView 가 현재 클릭 항목 과 어떻게 연 결 됩 니까?

mListItem.setOnScrollListener(new AbsListView.OnScrollListener() {
private int scrollState;
@Override
public void onScrollStateChanged(AbsListView absListView, int i) {
this.scrollState = i;
}
@Override
public void onScroll(AbsListView absListView,
int firstVisibleItem,
int visibleItemCount,
int totalItemCount) {
if(scrollState== AbsListView.OnScrollListener.SCROLL_STATE_IDLE){
return;
}
//     item   view       item
int current = mTitleList.indexOf(firstVisibleItem);
if(current!=currentItem && current>0){
currentItem=current;
//     , menuListView item  currentItem,  itemListView  
mMenuAdapter.setSelectItem(currentItem);
mMenuAdapter.notifyDataSetInvalidated();
}
}
});
위 에서 말씀 드 린 것 은 편집장 님 께 서 소개 해 주신 배 고 픈 것 같 습 니까?주문 화면 ListView 연동 의 실현 입 니 다.여러분 께 도움 이 되 셨 으 면 좋 겠 습 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 님 께 서 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기