ExpandableListView(2)

  1. public class ManageListAdapter extends BaseExpandableListAdapter{
  2.  
  3. public static final int SERVER_TYPE=0x000001;
  4. public static final int HISTORY_TYPE=0x000002;
  5.  
  6. private List<ServerElement> mData;
  7.  
  8. private LayoutInflater mInflater;
  9. private int viewType;
  10.  
  11.  
  12. public ManageListAdapter (Context c,int type,ArrayList<ServerElement> data){
  13.     mInflater = (LayoutInflater)c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  14.     mData=(List<ServerElement>) Collections.synchronizedList(new ArrayList<ServerElement>());
  15.     mData=data;
  16. }
  17.  
  18. @Override
  19. public Object getChild(int groupPosition, int childPosition) {
  20.     // TODO Auto-generated method stub
  21.     return mData.get(groupPosition);
  22. }
  23.  
  24. @Override
  25. public long getChildId(int groupPosition, int childPosition) {
  26.     // TODO Auto-generated method stub
  27.     return childPosition;
  28. }
  29.  
  30. @Override
  31. public View getChildView(int groupPosition, int childPosition,
  32.         boolean isLastChild, View convertView, ViewGroup parent) {
  33.     // TODO Auto-generated method stub
  34.     ViewHolder viewHolder;
  35.     if(convertView==null){
  36.         convertView=mInflater.inflate(R.layout.managelistchildelement, null);
  37.  
  38.         EditText IP=(EditText) convertView.findViewById(R.id.manageIP);
  39.         IP.setText(mData.get(groupPosition).mIp);
  40.  
  41.         EditText Port=(EditText) convertView.findViewById(R.id.managePort);
  42.         Port.setText(mData.get(groupPosition).mPort);
  43.  
  44.         EditText Username=(EditText) convertView.findViewById(R.id.manageUsername);
  45.         Username.setText(mData.get(groupPosition).mUsername);
  46.  
  47.         EditText Password=(EditText) convertView.findViewById(R.id.managePWD);
  48.         Password.setText(mData.get(groupPosition).mPassword);
  49.  
  50.         ImageButton btnUpdate=(ImageButton) convertView.findViewById(R.id.okBtn);
  51.  
  52.         viewHolder=new ViewHolder(IP,groupPosition);
  53.         switch(this.viewType){
  54.         case HISTORY_TYPE:
  55.             IP.setFocusable(false);
  56.             Port.setFocusable(false);
  57.             Username.setFocusable(false);
  58.             Password.setFocusable(false);
  59.             btnUpdate.setVisibility(View.INVISIBLE);
  60.             break;
  61.         case SERVER_TYPE:
  62.             btnUpdate.setFocusable(false);
  63.             break;
  64.         }
  65.         convertView.setTag(viewHolder);
  66.     }else{
  67.         viewHolder=(ViewHolder) convertView.getTag();
  68.     }
  69.     return convertView;
  70. }
  71.  
  72. @Override
  73. public int getChildrenCount(int groupPosition) {
  74.     // TODO Auto-generated method stub
  75.     return 1;
  76. }
  77.  
  78. @Override
  79. public Object getGroup(int groupPosition) {
  80.     // TODO Auto-generated method stub
  81.     return mData.get(groupPosition);
  82. }
  83.  
  84. @Override
  85. public int getGroupCount() {
  86.     // TODO Auto-generated method stub
  87.     return mData.size();
  88. }
  89.  
  90. @Override
  91. public long getGroupId(int groupPosition) {
  92.     // TODO Auto-generated method stub
  93.     return groupPosition;
  94. }
  95.  
  96. public void deleteItem(int groupPosition){
  97.     if(mData.size()<=0) return;
  98.     int i=0;
  99.     while (groupPosition+i+1<mData.size()) {
  100.         mData.set(groupPosition+i, mData.get(groupPosition+i+1));
  101.         i++;
  102.     }
  103.     mData.remove(mData.size()-1);
  104.     notifyDataSetChanged();
  105. }
  106.  
  107. public void addItem(ServerElement element){
  108.  
  109.     mData.add(element);
  110.     notifyDataSetChanged();
  111. }
  112.  
  113. @Override
  114. public View getGroupView(int groupPosition, boolean isExpanded,
  115.         View convertView, ViewGroup parent) {
  116.     // TODO Auto-generated method stub
  117.     ViewHolder viewHolder;
  118.     if(convertView==null){
  119.         convertView=mInflater.inflate(R.layout.managelistgroupelement, null);
  120.         TextView view=(TextView) convertView.findViewById(R.id.elementCaption);
  121.         ImageView viewDelete=(ImageView) convertView.findViewById(R.id.deleteBtn);
  122.         //viewDelete.setFocusable(false);
  123.         view.setText(mData.get(groupPosition).mName);
  124.         view.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
  125.         view.setPadding(36, 0, 0, 0);
  126.         if(groupPosition==0){
  127.             Log.v("ManageListAdapter", "Still Can be 0");
  128.         }
  129.         viewHolder=new ViewHolder(view,groupPosition);
  130.         viewDelete.setOnClickListener(new OnClickListener(){
  131.  
  132.             @Override
  133.             public void onClick(View v) {
  134.                 // TODO Auto-generated method stub
  135.                 deleteItem(getViewHolder(v).position);
  136.             }
  137.  
  138.         });
  139.         convertView.setTag(viewHolder);
  140.     }else{
  141.         viewHolder=(ViewHolder) convertView.getTag();
  142.     }
  143.     return convertView;
  144. }
  145.  
  146. @Override
  147. public boolean hasStableIds() {
  148.     // TODO Auto-generated method stub
  149.     return false;
  150. }
  151.  
  152. @Override
  153. public boolean isChildSelectable(int groupPosition, int childPosition) {
  154.     // TODO Auto-generated method stub
  155.     return true;
  156. }
  157.  
  158. @Override
  159. public boolean areAllItemsEnabled()
  160. {
  161.     return true;
  162. }
  163.  
  164.  
  165. public static class ViewHolder{
  166.     private TextView txtView;
  167.     public final int position;
  168.  
  169.     public ViewHolder(TextView view,int position){
  170.         this.txtView=view;
  171.         this.position=position;
  172.     }
  173. }
  174.  
  175. public ViewHolder getViewHolder(View v)
  176. {
  177.     if(v.getTag() == null)
  178.     {
  179.         return getViewHolder((View)v.getParent());
  180.     }
  181.     return (ViewHolder)v.getTag();
  182. }
  183.  
  184. private class OnDeleteClickListener implements OnClickListener{          
  185.     private int mGroupPosition;
  186.     OnDeleteClickListener(int groupPosition){
  187.             mGroupPosition = groupPosition;
  188.     }
  189.     @Override
  190.     public void onClick(View v) {
  191.         // TODO Auto-generated method stub
  192.         Log.v("ManageListAdapter","Deleting Group "+mGroupPosition);
  193.         deleteItem(mGroupPosition);
  194.     }              
  195. }
  196.  
  197. private class OnUpdateClickListener implements OnClickListener{          
  198.     private int mGroupPosition;
  199.     private int mChildrenPosition;
  200.     OnUpdateClickListener(int groupPosition,int childrenPosition){
  201.             mGroupPosition = groupPosition;
  202.             mChildrenPosition=childrenPosition;
  203.  
  204.     }
  205.     @Override
  206.     public void onClick(View v) {
  207.         // TODO Auto-generated method stub
  208.         addItem(mData.get(mGroupPosition));
  209.     }              
  210. }
  211.        
  212. <?xml version="1.0" encoding="utf-8"?>
  213. <TableLayout android:id="@+id/tableLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
  214.     <TableRow android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content">
  215.         <TextView android:textAppearance="?android:attr/textAppearanceMedium" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textView1" android:text="@string/Ip:port"></TextView>
  216.         <EditText android:id="@+id/manageIP" android:layout_width="wrap_content" android:layout_height="wrap_content">
  217.             <requestFocus></requestFocus>
  218.         </EditText>
  219.         <TextView android:textAppearance="?android:attr/textAppearanceMedium" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textView2" android:text="@string/:"></TextView>
  220.         <EditText android:id="@+id/managePort" android:layout_width="wrap_content" android:layout_height="wrap_content"></EditText>
  221.     </TableRow>
  222.     <TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content">
  223.         <TextView android:textAppearance="?android:attr/textAppearanceMedium" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textView3" android:text="@string/username"></TextView>
  224.         <EditText android:id="@+id/manageUsername" android:layout_width="wrap_content" android:layout_height="wrap_content"></EditText>
  225.     </TableRow>
  226.     <TableRow android:id="@+id/tableRow3" android:layout_width="wrap_content" android:layout_height="wrap_content">
  227.         <TextView android:textAppearance="?android:attr/textAppearanceMedium" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textView4" android:text="@string/password"></TextView>
  228.         <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="textPassword" android:id="@+id/managePWD"></EditText>
  229.         <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ok" android:id="@+id/okBtn" android:focusable="false" android:focusableInTouchMode="false"></ImageButton>
  230.     </TableRow>
  231. </TableLayout>
  232.        
  233. <?xml version="1.0" encoding="utf-8"?>
  234. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  235.     android:layout_height="fill_parent" android:orientation="horizontal"
  236.     android:layout_width="wrap_content" android:baselineAligned="false">
  237.     <TextView android:textAppearance="?android:attr/textAppearanceMedium"
  238.         android:layout_height="wrap_content" android:text="TextView"
  239.         android:id="@+id/elementCaption" android:layout_weight="1"
  240.         android:layout_width="0dp"></TextView>
  241.     <ImageView android:src="@drawable/delete" android:id="@+id/deleteBtn"
  242.         android:layout_gravity="right" android:layout_weight="1"
  243.         android:layout_height="wrap_content" android:layout_width="wrap_content"
  244.         android:focusable="false" android:focusableInTouchMode="false"></ImageView>
  245.  
  246. </LinearLayout>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值