【问题标题】:expandablelistview in fragment with master/detail flow具有主/详细信息流的片段中的可扩展列表视图
【发布时间】:2013-09-22 17:50:48
【问题描述】:

我正在尝试在 Android 4.2 上创建一个主/从流应用程序。

我创建了一个主从流项目,但我想实现一个ExpandableListView,而不是提供的ListView

master/detail 使用片段,这就是我卡住的地方……我已经成功地在一个单独的项目中创建了一个可扩展的列表视图。如何在主/详细流中实现它?

【问题讨论】:

    标签: android android-fragments expandablelistview master-detail


    【解决方案1】:

    我假设您使用 IDE 向导创建了 Master/Detail 示例项目。如果是这样,那么您可能会看到该向导创建了一个 ItemListFragment 类,该类默认扩展为 ListFragment

    如果您需要将简单列表替换为可扩展列表,那么您必须:

    1. Fragment 扩展,而不是ListFragment
    2. 创建一个 xml 布局文件,在其中声明 ExpandableListView
    3. 覆盖onCreateView() 并扩展包含ExpandableListView 的布局
    4. 获取对ExpandableListView 的引用,然后像以前一样使用它。

    类似这样的:

    // extend from Fragment
    public class ItemListFragment extends Fragment {
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    
            // inflate the layout that contains the ExpandableListView
            View view =  inflater.inflate(R.layout.fragment_items_list, container, false);
    
            // get a reference to ExpandableListView
            ExpandableListView list = (ExpandableListView)view.findViewById(R.id.my_list);
    
            // set the adapter
            // set listeners
            return view;
        }
    }
    

    【讨论】:

    • 你有我可以检查的示例应用程序或项目吗?感谢您的所有帮助@andy
    【解决方案2】:

    我不知道如何创建 ExpandableListView,但您可以像我在项目中实现的那样使用自定义列表视图来实现

    1.创建自定义列表行

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#00000000" >
    
        <RelativeLayout
            android:id="@+id/rel_main"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true" >
    
            <TextView
                android:id="@+id/text1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_marginRight="18dp"
                android:layout_marginTop="17dp"
                android:layout_toLeftOf="@+id/imageView1"
                android:paddingBottom="15dp"
                android:text="Large Text"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:textColor="#685f56" />
    
            <ImageView
                android:id="@+id/imageView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_alignTop="@+id/text1"
                android:layout_marginRight="16dp"
                android:layout_marginTop="5dp"
                android:src="@drawable/highlight_icon" />
        </RelativeLayout>
    
        <RelativeLayout
            android:id="@+id/relativeLayout1"
            android:layout_width="fill_parent"
            android:layout_height="300dp"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/rel_main"
            android:visibility="gone" >
        </RelativeLayout>
    
        <View
            android:id="@+id/view1"
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/relativeLayout1"
            android:background="#685f56" />
    
    </RelativeLayout>
    

    **2。在“ItemListFragment.java”中创建自定义适配器**

    public class CustomAdepeterNewJob extends BaseAdapter{
    
            //String[] tablecontent;
            int Click=0;
            Map<String, DummyItem> tablecontent = new HashMap<String, DummyItem>();
            Context context;
    
            public CustomAdepeterNewJob(Context context, Map<String, DummyItem> titles)
            {
                this.context = context;
                this.tablecontent = titles;
            }
    
    
            public class ViewHolder {
            public  TextView txt;
            public  ImageView img;
            public  RelativeLayout relativeLayout1,rel_main;
            }
    
            @Override
            public int getCount() {
                // TODO Auto-generated method stub
                return tablecontent.size();
            }
    
            @Override
            public Object getItem(int arg0) {
                // TODO Auto-generated method stub
                return null;
            }
    
            @Override
            public long getItemId(int position) {
                // TODO Auto-generated method stub
                return 0;
            }
    
            @Override
            public View getView(final int position, View convertView, ViewGroup parent) {
                // TODO Auto-generated method stub
                View view = convertView;
                final ViewHolder holder;
                if (convertView == null) {
    
                    LayoutInflater inflater = ((Activity) context).getLayoutInflater();
                    view = inflater.inflate(R.layout.c_simple_list_item, parent, false);
    
                    holder = new ViewHolder();
                    holder.txt = (TextView) view.findViewById(R.id.text1);
                    holder.img = (ImageView) view.findViewById(R.id.imageView1);
                    holder.rel_main=(RelativeLayout) view.findViewById(R.id.rel_main);
                    holder.relativeLayout1=(RelativeLayout) view.findViewById(R.id.relativeLayout1);
                    view.setTag(holder);
                } else {
                    holder = (ViewHolder) view.getTag();
                }
                String s=DummyContent.ITEMS.get(position).content;
                System.out.println("==dummy "+s);
                holder.txt.setText(s);
                if (s.equalsIgnoreCase("All")) 
                {
                    holder.img.setImageResource(R.drawable.all_icon);
                }else if (s.equalsIgnoreCase("Note"))   {
                    holder.img.setImageResource(R.drawable.notes_icon);
                }else if (s.equalsIgnoreCase("Highlight"))  {
                    holder.img.setImageResource(R.drawable.highlight_icon);
                }else if (s.equalsIgnoreCase("Snapshots"))  {
                    holder.img.setImageResource(R.drawable.snapshot_icon);
                }else if (s.equalsIgnoreCase("Draw"))   {
                    holder.img.setImageResource(R.drawable.draw_icon);
                }else if (s.equalsIgnoreCase("Record Sounde"))  {
                    holder.img.setImageResource(R.drawable.sound_recorder_icon);
                }
    
                view.setOnClickListener(new OnClickListener() {
    
                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
    
                        mCallbacks.onItemSelected(DummyContent.ITEMS.get(position).id);
                        if (holder.relativeLayout1.getVisibility()==View.GONE)
                        {
                            holder.rel_main.setBackgroundResource(R.drawable.list_item_bg_pressed);
                            holder.relativeLayout1.setVisibility(View.VISIBLE);
                        }else {
    
                            holder.relativeLayout1.setVisibility(View.GONE);
                            holder.rel_main.setBackgroundColor(Color.TRANSPARENT);
                        }
                    }
                });
    
    
                return view;
            }
    
        }
    

    3.并在 ItemListFregment 的“onCreate”中添加自定义适配器

    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            // TODO: replace with a real list adapter.
            /*setListAdapter(new ArrayAdapter<DummyContent.DummyItem>(getActivity(),
                    R.layout.c_simple_list_item, R.id.text1, DummyContent.ITEMS));*/
    
            setListAdapter(new CustomAdepeterNewJob(getActivity(), DummyContent.ITEM_MAP));
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-13
      • 2013-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多