多级listview的实现



public class ListFragment2 extends Fragment{

private View view;
private ExpandableListView expandLv;
private ExpandListAdapter adapter;

private ArrayList<String> groupdata;
private List<List<DiaryItem>> childData;
private List<DiaryItem> child;
private DiarySQL diarySql;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
view = inflater.from(getActivity()).inflate(R.layout.frament_list2,null);
expandLv = (ExpandableListView) view.findViewById(R.id.lv_fragment_listExpand);

diarySql = DiarySQL.getDiarySQL(getActivity());
initData();
adapter = new ExpandListAdapter(this.getActivity(),groupdata,childData);
expandLv.setAdapter(adapter);
expandLv.expandGroup(0); //是否展开
expandLv.setOnChildClickListener(childListener);
// expandLv.setOnGroupClickListener(new OnGroupClickListener() {
//
// @Override
// public boolean onGroupClick(ExpandableListView arg0, View arg1, int arg2,
// long arg3) {
// return false;
// }
// });
expandLv.setOnItemLongClickListener(new OnItemLongClickListener() {


@Override
public boolean onItemLongClick(AdapterView<?> arg0, View view,
int pos, long arg3) {
int grouppos = (Integer) view.getTag(R.id.tv_fragList2_date);
int childpos = (Integer) view.getTag(R.id.tv_fragList2_count);
if(childpos == -1){
Toast.makeText(getActivity(), "group pos", Toast.LENGTH_SHORT).show();
}else{
int delId =((DiaryItem)adapter.getChild(grouppos, childpos)).getId();
DeleteDialog delDialog = new DeleteDialog(getActivity(),R.style.DiaryDeleteDialog, diarySql, delId,new DeleteDialogListener() {
@Override
public void onFinish() {
initData();
adapter.updateAdapter(groupdata, childData);
}
});
Window window = delDialog.getWindow();
LayoutParams params = window.getAttributes();
params.y=view.getTop()-320;//arg1.getBottom()得到Item下边的坐标
window.setAttributes(params);
delDialog.show();
}
return true;
}
});

return view;
}

private void initData(){
groupdata = new ArrayList<String>();
childData = new ArrayList<List<DiaryItem>>();
child = new ArrayList<DiaryItem>();
TreeSet monthSet = diarySql.searchAllDiaryTime();
Iterator<String> iterator = monthSet.iterator();
while(iterator.hasNext()){
String date = iterator.next();
groupdata.add(date);
child = diarySql.searchAllDiaryMonth(date); //同月的所有记录
childData.add(child);
}
}

private OnChildClickListener childListener =  new OnChildClickListener() {


@Override
public boolean onChildClick(ExpandableListView arg0, View view,
int groupPos, int childPos, long id) {
Toast.makeText(getActivity(), "编辑", Toast.LENGTH_SHORT).show();
return false;
}
};

}


/**

扩展ListviewAdapter

*/

public class ExpandListAdapter extends BaseExpandableListAdapter{


private ArrayList<String> groupdata;
private List<List<DiaryItem>> childData;
private LayoutInflater inflater ;
private Context context;


public ExpandListAdapter(Context context,ArrayList<String> groupdata,List<List<DiaryItem>> childData){
this.context = context;
inflater = LayoutInflater.from(context);
this.groupdata = groupdata;
this.childData = childData;
}


public void updateAdapter(ArrayList<String> groupdata,List<List<DiaryItem>> childData){
this.groupdata = groupdata;
this.childData = childData;
this.notifyDataSetChanged();
}




@Override
public Object getChild(int arg0, int arg1) {
if(childData != null && childData.get(arg0).size() >0)
return childData.get(arg0).get(arg1);
return null;
}


@Override
public long getChildId(int arg0, int arg1) {
// TODO Auto-generated method stub
return 0;
}


@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView,
ViewGroup parent) {
View view = convertView;
DiaryItem item  = childData.get(groupPosition).get(childPosition);
if(view == null){
view = inflater.inflate(R.layout.item_lv_fragment_list, null);
}
TextView content = (TextView) view.findViewById(R.id.tv_lv_fragment_list_content);
TextView date = (TextView) view.findViewById(R.id.tv_lv_fragment_list_date);
content.setText(item.getContent());
date.setText(item.getTime());
//长按监听加标记
view.setTag(R.id.tv_fragList2_date, groupPosition);
view.setTag(R.id.tv_fragList2_count,childPosition);
return view;
}


@Override
public int getChildrenCount(int arg0) {
if(childData == null || childData.size() <=0)
return 0;
return childData.get(arg0).size();
}


@Override
public Object getGroup(int arg0) {
return groupdata.get(arg0);
}


@Override
public int getGroupCount() {
return groupdata.size();
}


@Override
public long getGroupId(int arg0) {
return 0;
}


@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
View view = convertView;
if(view == null){
view = inflater.inflate(R.layout.item_lv_fragment_list2, null);
}
TextView title = (TextView) view.findViewById(R.id.tv_fragList2_date);
TextView count = (TextView) view.findViewById(R.id.tv_fragList2_count);
title.setText(groupdata.get(groupPosition));
//长按监听加标记
view.setTag(R.id.tv_fragList2_date,groupPosition);
view.setTag(R.id.tv_fragList2_count,-1);
return view;
}


@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}


@Override
public boolean isChildSelectable(int arg0, int arg1) {
// TODO Auto-generated method stub
return true;
}


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值