• 关于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进行监听,相互嵌套的过程就实现了。

  • 相关阅读:
    Maven+SpringMVC+Dubbo 简单的入门demo配置
    记录Gerrit2.8.4环境迁移、安装、配置以及问题解决
    初试Jenkins2.0 Pipeline持续集成
    Docker镜像仓库Harbor之搭建及配置
    Docker镜像仓库Harbor之Swagger REST API整合配置
    GitLab 之 PlantUML 的配置及使用
    Git Review + Gerrit 安装及使用完成 Code-Review
    Maven 插件之 docker-maven-plugin 的使用
    SonarQube 的安装、配置及 Maven 项目的使用
    Java Maven项目之Nexus私服搭建和版本管理应用
  • 原文地址:https://www.cnblogs.com/new-comer/p/5355625.html
Copyright © 2020-2023  润新知