2015-07-02 6 views
-3

Привет, я действительно новичок в этом. У меня есть код для расширяемого списка. при нажатии на дочерние элементы он просто отображает тост того же текста. Я хочу открыть новое действие, когда мы нажимаем на любой дочерний элемент. Любая помощь будет высоко ценится.открывайте новую активность каждый раз, когда элемент нажимается на дочерний список

MyExpandableAdapter 
 

 
public class MyExpandableAdapter extends BaseExpandableListAdapter{ 
 
\t 
 
\t private Activity activity; 
 
\t  private ArrayList<Object> childtems; 
 
\t  private LayoutInflater inflater; 
 
\t  private ArrayList<String> parentItems, child; 
 

 
\t  // constructor 
 
\t  public MyExpandableAdapter(ArrayList<String> parents, ArrayList<Object> childern) 
 
\t  { 
 
\t   this.parentItems = parents; 
 
\t   this.childtems = childern; 
 
\t  } 
 

 
\t  public void setInflater(LayoutInflater inflater, Activity activity) 
 
\t  { 
 
\t   this.inflater = inflater; 
 
\t   this.activity = activity; 
 
\t  } 
 
\t  
 
\t  // method getChildView is called automatically for each child view. 
 
\t  // Implement this method as per your requirement 
 
\t  @Override 
 
\t  public View getChildView(int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) 
 
\t  { 
 

 
\t   child = (ArrayList<String>) childtems.get(groupPosition); 
 

 
\t   TextView textView = null; 
 

 
\t   if (convertView == null) { 
 
\t    convertView = inflater.inflate(R.layout.child_view, null); 
 
\t   } 
 
\t  
 
\t   // get the textView reference and set the value 
 
\t   textView = (TextView) convertView.findViewById(R.id.textViewChild); 
 
\t   textView.setText(child.get(childPosition)); 
 

 
\t   // set the ClickListener to handle the click event on child item 
 
\t   convertView.setOnClickListener(new OnClickListener() { 
 

 
\t    @Override 
 
\t    public void onClick(View view) { 
 
\t     Toast.makeText(activity, child.get(childPosition), 
 
\t       Toast.LENGTH_SHORT).show(); 
 
\t    } 
 
\t   }); 
 
\t   return convertView; 
 
\t  } 
 

 
\t  // method getGroupView is called automatically for each parent item 
 
\t  // Implement this method as per your requirement 
 
\t  @Override 
 
\t  public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) 
 
\t  { 
 

 
\t   if (convertView == null) { 
 
\t    convertView = inflater.inflate(R.layout.parent_view, null); 
 
\t   } 
 

 
\t   ((CheckedTextView) convertView).setText(parentItems.get(groupPosition)); 
 
\t   ((CheckedTextView) convertView).setChecked(isExpanded); 
 

 
\t   return convertView; 
 
\t  } 
 

 
\t  @Override 
 
\t  public Object getChild(int groupPosition, int childPosition) 
 
\t  { 
 
\t   return null; 
 
\t  } 
 

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

 
\t  @Override 
 
\t  public int getChildrenCount(int groupPosition) 
 
\t  { 
 
\t   return ((ArrayList<String>) childtems.get(groupPosition)).size(); 
 
\t  } 
 

 
\t  @Override 
 
\t  public Object getGroup(int groupPosition) 
 
\t  { 
 
\t   return null; 
 
\t  } 
 

 
\t  @Override 
 
\t  public int getGroupCount() 
 
\t  { 
 
\t   return parentItems.size(); 
 
\t  } 
 

 
\t  @Override 
 
\t  public void onGroupCollapsed(int groupPosition) 
 
\t  { 
 
\t   super.onGroupCollapsed(groupPosition); 
 
\t  } 
 

 
\t  @Override 
 
\t  public void onGroupExpanded(int groupPosition) 
 
\t  { 
 
\t   super.onGroupExpanded(groupPosition); 
 
\t  } 
 

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

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

 
\t  @Override 
 
\t  public boolean isChildSelectable(int groupPosition, int childPosition) 
 
\t  { 
 
\t   return false; 
 
\t  } 
 

 
}
Main Activity 
 

 
public class MainActivity extends ExpandableListActivity{ 
 
\t 
 
\t // Create ArrayList to hold parent Items and Child Items 
 
    private ArrayList<String> parentItems = new ArrayList<String>(); 
 
    private ArrayList<Object> childItems = new ArrayList<Object>(); 
 

 
    @Override 
 
    public void onCreate(Bundle savedInstanceState) 
 
    { 
 

 
     super.onCreate(savedInstanceState); 
 

 
     
 
     // Create Expandable List and set it's properties 
 
     ExpandableListView expandableList = getExpandableListView(); 
 
     expandableList.setDividerHeight(2); 
 
     expandableList.setGroupIndicator(null); 
 
     expandableList.setClickable(true); 
 

 
     // Set the Items of Parent 
 
     setGroupParents(); 
 
     // Set The Child Data 
 
     setChildData(); 
 

 
     // Create the Adapter 
 
     MyExpandableAdapter adapter = new MyExpandableAdapter(parentItems, childItems); 
 

 
     adapter.setInflater((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE), this); 
 
     
 
     // Set the Adapter to expandableList 
 
     expandableList.setAdapter(adapter); 
 
     expandableList.setOnChildClickListener(this); 
 
    } 
 

 
    // method to add parent Items 
 
    public void setGroupParents() 
 
    { 
 
     parentItems.add("Company"); 
 
     parentItems.add("Pricing & Plans"); 
 
     parentItems.add("Services"); 
 
     parentItems.add("Careers"); 
 
     parentItems.add("Clients"); 
 
     parentItems.add("Contact Us"); 
 
    } 
 

 
    // method to set child data of each parent 
 
    public void setChildData() 
 
    { 
 

 
     // Add Child Items for Company 
 
     ArrayList<String> child = new ArrayList<String>(); 
 
     child.add("Who We Are"); 
 
     child.add("Advantage @ KDIPL"); 
 
     child.add("Team"); 
 
     
 
     
 
     childItems.add(child); 
 

 
     // Add Child Items for Pricing & Plans 
 
     child = new ArrayList<String>(); 
 
     child.add("SEO Packages"); 
 
     child.add("SMO Packages"); 
 
     child.add("PPC Packages"); 
 
     child.add("Web Design Packages"); 
 
     child.add("Web Development Packages"); 
 
     child.add("Email Marketing Packages"); 
 
     child.add("Bulk SMS Packages"); 
 
     
 
     childItems.add(child); 
 

 
     // Add Child Items for Services 
 
     child = new ArrayList<String>(); 
 
     
 
     child.add("SMO Services"); 
 
     child.add("PPC Services"); 
 
     child.add("Web Design Services"); 
 
     child.add("Web Development Services"); 
 
     child.add("SEO Services"); 
 
     
 
     childItems.add(child); 
 

 
     // Add Child Items for Careers 
 
     child = new ArrayList<String>(); 
 
     child.add("Career with Us"); 
 
     child.add("Current Openings"); 
 
     child.add("Recruitment Process"); 
 
     
 
     childItems.add(child); 
 
     
 
    // Add Child Items for Clients 
 
     child = new ArrayList<String>(); 
 
     child.add("Testimonials"); 
 
     child.add("SEO Results"); 
 
     child.add("PPC Results"); 
 
     child.add("Portfolio"); 
 
     
 
     childItems.add(child); 
 
     
 
    // Add Child Items for Contact Us 
 
     child = new ArrayList<String>(); 
 
     child.add("Location"); 
 
     child.add("Request a Quote"); 
 
     child.add("Feedback"); 
 
     
 
     childItems.add(child); 
 
     
 
     
 
    } 
 
    
 
    
 
\t 
 
\t 
 
}

+0

читать [это] (http://developer.android.com/training/basics/firstapp/ start-activity.html # BuildIntent), чтобы опереться на то, как начать новую деятельность – calvinfly

+0

, ваша проблема решена? – Kinjal

ответ

0

Вы можете написать этот

convertView.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View view) { 
        Intent intent= new Intent(context, MainActivity.class); 
        context.startActivity(intent); 
       } 
      }); 

Вместо этого

convertView.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View view) { 
        Toast.makeText(activity, child.get(childPosition), 
          Toast.LENGTH_SHORT).show(); 
       } 
      }); 

И сделать один конструктор в адаптере как этот

private Context context; 
public MyExpandableAdapter (Context context) { 
       this.context = context;  
     } 
+0

откроет новую активность для каждого дочернего элемента? –

+1

ya попытаться добавить это, чтобы он мог решить вашу проблему – Kinjal

0

в вас активности добавить

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

       @Override 
       public boolean onChildClick(ExpandableListView parent, View v, 
         int groupPosition, int childPosition, long id) { 
        Toast.makeText(
          getApplicationContext(),groupPosition+ " group "+childPosition+" is clicked", Toast.LENGTH_SHORT) 
          .show(); 

        Intent in = new Intent(Class_Name.this, JUMP_Class.class); 
        startActivity(in); 
        return false; 
       } 
      }); 
Смежные вопросы