博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于listview嵌套listview
阅读量:7219 次
发布时间:2019-06-29

本文共 3442 字,大约阅读时间需要 11 分钟。

  项目中想要实现一个效果,就是我们显示用户不同景点下(个数事先不确定),不同的用户动态信息(带有图片,文字,个数事先不确定),所以,试图用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进行监听,相互嵌套的过程就实现了。

转载于:https://www.cnblogs.com/new-comer/p/5355625.html

你可能感兴趣的文章
爬虫——请求库之requests
查看>>
android子线程更新UI,与主Thread一起工作
查看>>
50行实现简易HTTP服务器
查看>>
细讲递归(recursion)
查看>>
进程和进程间通信
查看>>
微处理器的两种结构比较
查看>>
ORACLE EXPIRED(GRACE)
查看>>
Markdown应用样例
查看>>
多文本框的值得存放和赋值
查看>>
Linux中计划任务执行脚本crontab-简洁版
查看>>
Java - IO
查看>>
安卓app中嵌入一个H5页面,当手机系统设置字体变大时,如何使H5页面的字体不会随用户自己调整的系统字体变化而变化?...
查看>>
safari 收藏导出 手机safari 导出
查看>>
Dalvik 虚拟机 jvm 区别
查看>>
hexo从零开始
查看>>
币值转换
查看>>
RabbitMQ(六)远程连接
查看>>
得到ios设备的一些信息
查看>>
【教程】如何修改路由表?
查看>>
云计算与虚拟化之后:网络威胁成新挑战
查看>>