我是靠谱客的博主 还单身含羞草,最近开发中收集的这篇文章主要介绍android的ListView点击item使item展开的做法的实现代码,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本文介绍了android的ListView点击item使item展开的做法的实现代码,分享给大家,具体如下:

效果图:

原理是点击item的时候,重新measure list的各个item的高度

list.setOnItemClickListener(new OnItemClickListener() {
 
  @Override
  public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
   MyData data = myList.get(position);
   if (oldPostion == position) {
     if (data.expand) {
      oldPostion = -1;
     }
     data.expand = !data.expand;
   }else{
     oldPostion = position;
     data.expand = true;
   }
    
   int totalHeight = 0;
   for(int i=0;i<myAdapter.getCount();i++) {
     View viewItem = myAdapter.getView(i, null, list);
     viewItem.measure(0, 0);
     totalHeight += viewItem.getMeasuredHeight();
   }
    
   ViewGroup.LayoutParams params = list.getLayoutParams();
   params.height = totalHeight
      + (list.getDividerHeight() * (list.getCount() - 1));
   list.setLayoutParams(params);
   myAdapter.notifyDataSetChanged();
  }
});

adapter:

private class myAdapter extends BaseAdapter{
 
  @Override
  public int getCount() {
   return myList.size();
  }
 
  @Override
  public Object getItem(int position) {
   return myList.get(position);
  }
 
  @Override
  public long getItemId(int position) {
   return position;
  }
 
  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    
   MyTag tag = new MyTag();
   MyData data = myList.get(position);
   if(convertView == null) {
     convertView = inflater.inflate(R.layout.expand_item_layout, null);
     tag.item1 = (TextView)convertView.findViewById(R.id.item1);
     tag.item2 = (RelativeLayout)convertView.findViewById(R.id.item2);
     convertView.setTag(tag);
   }else{
     tag = (MyTag)convertView.getTag();
   }
   if(data.expand) {
     tag.item2.setVisibility(View.VISIBLE);
   }else{
     tag.item2.setVisibility(View.GONE);
   }
    
   tag.item1.setText(data.name);
   return convertView;
  }
  
}
 
private class MyTag{
  private TextView item1;
  private RelativeLayout item2;
}
 
private class MyData{
  boolean expand;
  String name;
}

代码在https://github.com/nickgao1986/StepSport

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持靠谱客。

最后

以上就是还单身含羞草为你收集整理的android的ListView点击item使item展开的做法的实现代码的全部内容,希望文章能够帮你解决android的ListView点击item使item展开的做法的实现代码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(92)

评论列表共有 0 条评论

立即
投稿
返回
顶部