2014-03-28 123 views
0

我在可扩展列表下创建了一个文本框。一切工作正常,但是当我在一个文本框中输入文本,花费另一个并输入文本,然后以前输入的文本是清楚的。我不知道这是为什么发生,但帮助我。当前往下一个文本框时清除文本框

下面是代码: -

MainActivity.java

 package info.androidhive.expandablelistview; 

    import java.util.ArrayList; 
    import java.util.HashMap; 
    import java.util.List; 
    import android.app.Activity; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.ExpandableListView; 
    import android.widget.ExpandableListView.OnChildClickListener; 
    import android.widget.ExpandableListView.OnGroupClickListener; 
    import android.widget.ExpandableListView.OnGroupCollapseListener; 
    import android.widget.ExpandableListView.OnGroupExpandListener; 
    import android.widget.Toast; 

    public class MainActivity extends Activity { 

    ExpandableListAdapter listAdapter; 
    ExpandableListView expListView; 
    List<String> listDataHeader; 
    List<String> listDataChild; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // get the listview 
    expListView = (ExpandableListView) findViewById(R.id.lvExp); 

    // preparing list data 
    prepareListData(); 

    listAdapter = new ExpandableListAdapter(this, listDataHeader, listDataChild); 

    // setting list adapter 
    expListView.setAdapter(listAdapter); 

    // Listview Group click listener 
    expListView.setOnGroupClickListener(new OnGroupClickListener() { 

     @Override 
     public boolean onGroupClick(ExpandableListView parent, View v, 
       int groupPosition, long id) { 
      // Toast.makeText(getApplicationContext(), 
      // "Group Clicked " + listDataHeader.get(groupPosition), 
      // Toast.LENGTH_SHORT).show(); 
      return false; 
     } 
    }); 

    // Listview Group expanded listener 
    expListView.setOnGroupExpandListener(new OnGroupExpandListener() { 

     @Override 
     public void onGroupExpand(int groupPosition) { 
      Toast.makeText(getApplicationContext(), 
        listDataHeader.get(groupPosition) + " Expanded", 
        Toast.LENGTH_SHORT).show(); 
     } 
    }); 

    // Listview Group collasped listener 
    expListView.setOnGroupCollapseListener(new OnGroupCollapseListener() { 

     @Override 
     public void onGroupCollapse(int groupPosition) { 
      Toast.makeText(getApplicationContext(), 
        listDataHeader.get(groupPosition) + " Collapsed", 
        Toast.LENGTH_SHORT).show(); 

     } 
    }); 

    // Listview on child click listener 
    expListView.setOnChildClickListener(new OnChildClickListener() { 

     @Override 
     public boolean onChildClick(ExpandableListView parent, View v, 
       int groupPosition, int childPosition, long id) { 
      // TODO Auto-generated method stub 
     /* Toast.makeText(
        getApplicationContext(), 
        listDataHeader.get(groupPosition) 
          + " : " 
          + listDataChild.get(
            listDataHeader.get(groupPosition)).get(
            childPosition), Toast.LENGTH_SHORT) 
        .show();*/ 
      return false; 
     } 
    }); 
} 

/* 
* Preparing the list data 
*/ 
private void prepareListData() { 
    listDataHeader = new ArrayList<String>(); 
    listDataChild = new ArrayList<String>(); 

    // Adding child data 
    listDataHeader.add("Top 250"); 
    listDataHeader.add("Now Showing"); 
    listDataHeader.add("Coming Soon.."); 

    // Adding child data 
    List<String> top250 = new ArrayList<String>(); 
    top250.add("The Shawshank Redemption"); 
    top250.add("The Godfather"); 
    top250.add("The Godfather: Part II"); 
    top250.add("Pulp Fiction"); 
    top250.add("The Good, the Bad and the Ugly"); 
    top250.add("The Dark Knight"); 
    top250.add("12 Angry Men"); 

    List<String> nowShowing = new ArrayList<String>(); 
    nowShowing.add("The Conjuring"); 
    nowShowing.add("Despicable Me 2"); 
    nowShowing.add("Turbo"); 
    nowShowing.add("Grown Ups 2"); 
    nowShowing.add("Red 2"); 
    nowShowing.add("The Wolverine"); 

    List<String> comingSoon = new ArrayList<String>(); 
    comingSoon.add("2 Guns"); 
    comingSoon.add("The Smurfs 2"); 
    comingSoon.add("The Spectacular Now"); 
    comingSoon.add("The Canyons"); 
    comingSoon.add("Europa Report"); 
    listDataChild.add(listDataHeader.get(0)); // Header, Child data 
    listDataChild.add(listDataHeader.get(1)); 
    listDataChild.add(listDataHeader.get(2)); 
} 
} 

ExpandableListAdapter.java

 package info.androidhive.expandablelistview; 

     import java.util.HashMap; 
     import java.util.List; 

     import android.content.Context; 
     import android.graphics.Typeface; 
     import android.view.LayoutInflater; 
     import android.view.View; 
     import android.view.ViewGroup; 
     import android.widget.BaseExpandableListAdapter; 
     import android.widget.TextView; 

     public class ExpandableListAdapter extends BaseExpandableListAdapter { 

      private Context _context; 
      private List<String> _listDataHeader; // header titles 
      // child data in format of header title, child title 
      private List<String> _listDataChild; 

      public ExpandableListAdapter(Context context, List<String> listDataHeader, 
        List<String> listChildData) { 
       this._context = context; 
       this._listDataHeader = listDataHeader; 
       this._listDataChild = listChildData; 
      } 

      @Override 
      public Object getChild(int groupPosition, int childPosititon) { 
       return null; 
      } 

      @Override 
      public long getChildId(int groupPosition, int childPosition) { 
       return childPosition; 
      } 

      @Override 
      public View getChildView(int groupPosition, final int childPosition, 
        boolean isLastChild, View convertView, ViewGroup parent) { 

       final String childText = (String) getChild(groupPosition, childPosition); 

       if (convertView == null) { 
        LayoutInflater infalInflater = (LayoutInflater) this._context 
          .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
        convertView = infalInflater.inflate(R.layout.list_item, null); 
       } 

       TextView txtListChild = (TextView) convertView 
         .findViewById(R.id.lblListItem); 

       txtListChild.setText(childText); 
       return convertView; 
      } 

      @Override 
      public int getChildrenCount(int groupPosition) { 
       return 1; 
      } 

      @Override 
      public Object getGroup(int groupPosition) { 
       return this._listDataHeader.get(groupPosition); 
      } 

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

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

      @Override 
      public View getGroupView(int groupPosition, boolean isExpanded, 
        View convertView, ViewGroup parent) { 
       String headerTitle = (String) getGroup(groupPosition); 
       if (convertView == null) { 
        LayoutInflater infalInflater = (LayoutInflater) this._context 
          .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
        convertView = infalInflater.inflate(R.layout.list_group, null); 
       } 

       TextView lblListHeader = (TextView) convertView 
         .findViewById(R.id.lblListHeader); 
       lblListHeader.setTypeface(null, Typeface.BOLD); 
       lblListHeader.setText(headerTitle); 

       return convertView; 
      } 

      @Override 
      public boolean hasStableIds() { 
       return false; 
      } 

      @Override 
      public boolean isChildSelectable(int groupPosition, int childPosition) { 
       return true; 
      } 

     } 

activity_main.xml中

 <?xml version="1.0" encoding="utf-8"?> 
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:orientation="vertical" 
      android:background="#f4f4f4" > 

        <ExpandableListView 
         android:id="@+id/lvExp" 
         android:layout_height="match_parent" 
         android:layout_width="match_parent" 
         android:cacheColorHint="#00000000"/> 

     </LinearLayout> 

list_group.xml

 <?xml version="1.0" encoding="utf-8"?> 
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:padding="8dp" 
      android:background="#000000"> 


      <TextView 
       android:id="@+id/lblListHeader" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft" 
       android:textSize="17dp" 
       android:textColor="#f9f93d" /> 

     </LinearLayout> 

list_item.xml

 <?xml version="1.0" encoding="utf-8"?> 
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="55dip" 
      android:orientation="vertical" > 
      <EditText 
       android:id="@+id/lblListItem" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:ems="10" > 

       <requestFocus /> 
      </EditText> 

     </LinearLayout> 
+0

我注意到我使用'txtListChild.setText(childText);'在getChildFunction中,这是错误的。现在editText的内容不会改变,但文本移动到另一个editText到另一个editText。例如,我在3rd editText中编写内容,然后展开2nd,然后将文本移至ist和2nd editText。 – Mangita

回答

0

你缺少代码getChild()方法

@Override 
     public Object getChild(int groupPosition, int childPosititon) { 
      return null; 
     } 

CHAGE到

@Override 
     public Object getChild(int groupPosition, int childPosititon) { 
      return this._listDataChild.get(childPosititon); 
     } 
+0

不工作它始终显示'Top 250'而不是空格。和以前的文字也改为“Top 250”。 – Mangita

0

你是从getChild变化definit返回null离子到

return this._listDataChild.get(childPosititon); 
+0

不工作它总是显示'Top 250'而不是空格。和以前的文字也改为“Top 250”。 – Mangita