お腹が空きましたか?注文インターフェースListView連動の実現です。


前の記事ではお腹が空きましたか?注文インターフェース二つのListView連動効果を紹介しました。
主に2つのListViewがどのように相互関連を実現するかを実現しました。ちょうど前のブログのreviewはListViewコントロールの常規使用をしました。このブログは主に大神さんのブログの実現に対してコード層の分析を行います。
一方、自分の都合がいいので、これからのコードの実現に参考します。一方、入門したばかりのAndroid初心者たちは共同で勉強しています。
二、最終の効果図

上記のように、効果図はお腹が空いたような、ちょっとした食事インターフェースのListViewカスケードです。
三、ListView連結を実現する困難点
分かりやすいように、本文の左側のListViewをMenuListViewといい、右側のListViewをItemListViewといいます。
1.二つのListViewがActivity全体におけるLayoutレイアウト問題
2.手動でMenuListViewのitemをクリックして、ItemListViewはどのように関連表示をトリガしますか?
MenuListViewの「新品セット」をクリックしたら、右側のItemListViewのget Viewはどのように新品セットの内容を表示しますか?
3.手動でItemListViewをスライドさせる時、MenuListViewはどのように現在のクリック項目に関連しますか?
マニュアルスライドItemListViewが「飲み物類」の場合、左側のMenuListViewの現在のクリックItemは飲み物類として表示されます。即ち背景色は白色です。
四、コード実現
1.ListViewのレイアウト問題
このスクリーンショットを見た時、第一に思い浮かんだのは重みの表示であるAndroid:layout_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:layout_width=「wrap_」content「Androidに代わる:layout_。width="0 dp"
必要に応じて表示できます。
2.手動でMenuListViewのitemをクリックして、ItemListViewはどのように関連表示をトリガしますか?
MenuListViewとItemListViewの関連表示は主にlistViewが持っている関数sets Selectによって関連している。
例えば、第i項がMenuListViewに表示されると、ItemListViewはi値に基づいてi項の最初の値に関連し、現在のsets Selectに設定される。
コードの実装は以下の通りです。
MenuListViewのアイテムをモニターします。

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.手動でItemListViewをスライドさせる時、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连动の実现は、皆さんのために役に立つと思います。もし何か疑问があれば、メッセージをください。小编はすぐに返事します。ここでも私たちのサイトを応援してくれてありがとうございます。