从列表视图的位置打开子视图

时间:2013-10-17 09:12:54

标签: android android-listview textview

我有一个listview,它有10行,可以滚动。现在我需要的是

1)点击每一行我在同一个窗口打开子列表视图,但所有这些都在顶部打开。相反,我想打开行附近的视图,我希望我的父视图不被隐藏。例如。如果我点击第5行,新的textview应该在这一行附近打开。 ()

2)对于listview中的行选择使用选择器,但我的问题是主视图在移动到子行后仍处于选中状态。 相反,我希望主视图是正常的,一旦我移动到子视图,当我返回时,当我按下按钮,那时我的主视图行 需要选择。

帮助我实现同样的目标..

3 个答案:

答案 0 :(得分:0)

碎片容器:

public class FragmentFolderList extends SherlockFragment{
    protected AdapterFolderList     _adapter;
    protected ListView              _listView;
    protected View                  _view;
    public static final String      BACKSTACKCATEGORY   = "backStackCat";

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        _view = inflater.inflate(R.layout.fragment, container, false);
        _listView = (ListView) _view.findViewById(R.id.list);
        return _view;
    }

        @Override
        public void onViewCreated(View view, Bundle savedInstanceState) {
            super.onViewCreated(view, savedInstanceState);
            _adapter = new AdapterFolderList();
            _listView.setAdapter(_adapter);
            _listView.setOnItemClickListener(this);
        }

    protected void moveToDirectory(int where) {
            FragmentDirectoriesList fragment = new FragmentDirectoriesList();
            Bundle param = new Bundle();
            param.putInt("position", where);
            fragment.setArguments(param);
            getActivity().getSupportFragmentManager().beginTransaction().add(R.id.fragment_annuaire, fragment).addToBackStack(BACKSTACKCATEGORY).commit();
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        moveToDirectory(position);
    }
}

布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="4dp" >
    </ListView>
</LinearLayout>

答案 1 :(得分:0)

看看你描述的内容,我认为你需要的是ExpandableListView而不是正常的ListView,请查看此link

答案 2 :(得分:0)

我通过将它放在相对布局中解决了我的问题,这是我的代码..

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/listView1"
        android:layout_width="145dp"
        android:layout_height="wrap_content"
         />

     <ListView
        android:id="@+id/listView2"
        android:layout_width="145dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="147dp"
        android:layout_marginTop="23dp"
        />
<ListView
        android:id="@+id/listView2"
        android:layout_width="145dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="147dp"
        android:layout_marginTop="23dp"
       />
</RelativeLayout>

希望这会对某人有所帮助: - )