0

I have a layout which contains two list views, the XML looks a bit like this:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin">

    <ListView
        android:id="@+id/list_view_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <ListView
        android:id="@+id/list_view_2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/list_view_1" />

</RelativeLayout>

"list_view_2" will contain a significantly larger amount of data than "list_view_1". Is is possible that when scrolling on the "list_view_2" it hides "list_view_1". So it goes from: https://i.stack.imgur.com/NnQVp.png to https://i.stack.imgur.com/lWHVZ.png.

Is this at all possible?

Thanks in advance!

4 Answers4

0

This is the full code example:

Java Code:

import java.util.ArrayList;
import java.util.List;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;


public class MainActivity extends ActionBarActivity {

    ListView LV1, LV2;
    List<String> li1, li2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        LV1 = (ListView)findViewById(R.id.list_view_1);
        LV2 = (ListView)findViewById(R.id.list_view_2);

        li1=new ArrayList<String>();
        li1.add("List1 1");
        li1.add("List1 2");
        li1.add("List1 3");
        li1.add("List1 4");
        li1.add("List1 5");

        li2=new ArrayList<String>();
        li2.add("List2 1");
        li2.add("List2 2");
        li2.add("List2 3");
        li2.add("List2 4");
        li2.add("List2 5");

        ArrayAdapter<String> adp1=new ArrayAdapter<String> (getBaseContext(),
                android.R.layout.simple_dropdown_item_1line,li1);
        adp1.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);

        ArrayAdapter<String> adp2=new ArrayAdapter<String> (getBaseContext(),
                android.R.layout.simple_dropdown_item_1line,li2);
        adp2.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);


        LV1.setAdapter(adp1);
        LV2.setAdapter(adp2);
        adp1.notifyDataSetChanged();
        adp2.notifyDataSetChanged();
        LV2.setOnScrollListener(new OnScrollListener() {

            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
                // TODO Auto-generated method stub
                LV1.setVisibility(View.GONE);
            }

            @Override
            public void onScroll(AbsListView view, int firstVisibleItem,
                    int visibleItemCount, int totalItemCount) {
                // TODO Auto-generated method stub
                //LV2.setVisibility(View.GONE);
            }
        });
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

XML Code :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin">

    <ListView
        android:layout_alignParentTop="true"
        android:id="@+id/list_view_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <ListView
        android:id="@+id/list_view_2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/list_view_1" />

</RelativeLayout>
user2235615
  • 1,513
  • 3
  • 17
  • 37
0

Use this to detect scroll event https://stackoverflow.com/a/17017477/2155188

Then you can use

list_view_1.setVisibility(View.GONE);
Community
  • 1
  • 1
Burak
  • 478
  • 1
  • 6
  • 18
0
listview2.setOnScrollListener(new OnScrollListener() {

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {

        }

        @Override
        public void onScroll(AbsListView view, int firstVisibleItem,
                int visibleItemCount, int totalItemCount) {

           listview1.setVisibility(View.GONE);

        }
    });
Sam
  • 4,046
  • 8
  • 31
  • 47
0

It is Absolutely Possible.

Do something Like This

Make your Parent Layout as LinearLayout

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightsum="10">

<ListView 
android:id="@+id/listview1"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight=3/>

<ListView 
android:id="@+id/listview2"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight=7/>

 </LinearLayout>

Now in ListView 2

listview2.setOnScrollListener(new OnScrollListener() {

    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onScroll(AbsListView view, int firstVisibleItem,
            int visibleItemCount, int totalItemCount) {
        YourListView1.setVisibility(View.GONE);

    }
});
Chiradeep
  • 973
  • 12
  • 32