zoukankan      html  css  js  c++  java
  • 关于listview嵌套listview

      项目中想要实现一个效果,就是我们显示用户不同景点下(个数事先不确定),不同的用户动态信息(带有图片,文字,个数事先不确定),所以,试图用listview中嵌套listview来实现,虽然效果不太美观,但还是尝试了一下,下面把基本思路和嵌套的运用记录一下。

    1.文件说明:

    MainActivity.java

    activity_main.xml

    item.xml

    Item.java

    subItem.xml

    SubItem.java

    (activity_main布局中运用到listview,引用item.xml布局定义,在item.xml中又运用到listview,引用subItem.xml布局定义,Item.java和SubItem.java是对应xml布局的类定义)

    2.关键代码说明:

    activity_main.xml中:

    <LinearLayout>

      <TextView>android:text="主界面布局"</TextView>

      <ListView>android:id="@+id/list_view"</ListView>

    </LinearLayout>

    item.xml中:

    <LinearLayout>

      <TextView>android:text="一级listView布局"</TextView>

      <ListView>android:id="@+id/sub_list_view"</ListView>

    </LinearLayout>

     

    Item.java中:

    public class Item

    {

      private String text;

      private private List<SubItem> subList;

      public Item(String text, List<SubItem>subList)

      {

        this.text = text;

        this.subList = subList;

      }

      public String getText()

      {

        return text;

      }

      public List<SubItem> getSubItemList()

      {

        return subList;

      }


    }

    subItem.xml中:

    <LinearLayout>

      <TextView>android:text="二级listVIew布局"</TextView>

      <ImageView></ImageView>

    </LinearLayout>

    SubItem.java中类似Item.java。

    MainActivity中:

    public class MainActivity implements OnCheckedChangeListener

    {

      private List<Item> itemList = new ArrayList<Item>();

      protected void onCreate(Bundle savedInstanceState)

      {

        addItemListEle();

        ItemAdapter itemAdapter = new ItemAdapter(MainActivity.this, R.layout.item, itemList);

      ListView listview = (ListView)findViewById(R.id.list_view);

      listview.setAdapter(itemAdapter);

      }

      public void addItemListEle()

      {

        for(int j =0 ; j < 3; j++)

        {

          List<SubItem> subItemList = new ArrayList<SubItem>();

          for(int i =0 ; i < 3; i++)

          {

            subItemList.add(new SubItem("这是item"+j+"的第"+i+"个subItem",R.drawable...));

          }

          itemList.add(subItemList);

        }

      }

    private class ItemAdapter extends ArrayAdapter<Item>

    {

      private int resourceId;

      public ItemAdapter(Context context, int resource, List<Item> objects) {
        super(context, resource, objects);
        resourceId = resource;
      }

      @Override
      public View getView(int position, View convertView, ViewGroup parent) {
        Item item = getItem(position);// 获取当前项的Item实例
        List<SubItem> subItemList = new ArrayList<SubItem>();
        View view = LayoutInflater.from(getContext()).inflate(resourceId, null);

        TextView itemText = (itemText)view.findViewById(R.id.itemtext);
        ListView itemList = (ListView)view.findViewById(R.id.list_view);

        //获得填充数据

        itemText.setText(item.getText());

        SubItemAdapter subItemAdapter = new SubItemAdapter(view.getContext, R.layout.subItem,subItemList);

        itemList.setAdapter(subItemAdapter);

        return view;
    }

    }

    private class SubItemAdapter extends ArrayAdapter<SubItem>{

      private int resourceId;
      public SubItemAdapter(Context context, int resource,List<SubItem> objects) {
      super(context, resource, objects);
      resourceId = resource;
      }

      @Override
      public View getView(int position, View arg1, ViewGroup arg2) {

      SubItem subItem = getItem(position); //获得当前的SubItem实例

      View view getLayoutInflater().inflate(ResouceId, null);

      TextView subText = (TextView)findViewById(R.id.sub_text);
      ImageView subImage = (ImageView)view1.findViewById(R.id.sub_image);
      
      subImage.setImageResource(subItem.getImageId());
      subText.setText(subItem.getText());
      return view;
      }
    }

    }

      整个过程就是对外层list设置监听,外层list里的又对list进行监听,相互嵌套的过程就实现了。

  • 相关阅读:
    OLAP ODS项目的总结 平台选型,架构确定
    ORACLE ORA12520
    ORACLE管道函数
    ORACLE RAC JDBC 配置
    ORACLE RAC OCFS连接产生的错误
    ORACLE 启动和关闭详解
    OLAP ODS项目的总结 起步阶段
    ORACLE RAC 配置更改IP
    ORACLE RAC OCR cann't Access
    ORACLE RAC Debug 之路 CRS0184错误与CRS初始化
  • 原文地址:https://www.cnblogs.com/new-comer/p/5355625.html
Copyright © 2011-2022 走看看