2015-06-01 4 views
0

У меня есть код о onChildClickListener как фрагмент кода нижеAndroid ExpandableList onChildClickListener в фрагменте не работает

OnChildClickListener occl = new OnChildClickListener() { 

      @Override 
      public boolean onChildClick(ExpandableListView parent, View v, 
        int groupPosition, int childPosition, long id) { 
       // TODO Auto-generated method stub 
       Toast.makeText(getActivity(), "Jalan", Toast.LENGTH_LONG).show(); 
       return true; 
      } 
     }; 
lv2.setOnChildClickListener(occl); 

Но Toast does'nt появляются, почему это может происходить?

В зависимости 2 файлов, (Извините за длинный пост, я хочу, чтобы это было понятно)

Ниже отрезала код адаптера:

package com.em.crayonpediamoodlesiswa; 

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import android.content.Context; 
import android.content.Entity; 
import android.graphics.Typeface; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseExpandableListAdapter; 
import android.widget.ExpandableListView; 
import android.widget.TextView; 

public class ExpandableListAdapter extends BaseExpandableListAdapter { 

private Context context; 
private List<String> expandableListTitle; 
private HashMap<String, List<String>> expandableListDetail; 
ArrayList<Entity> objects; 

View rootView; 

ExpandableListAdapterChild la; 
ExpandableListView lv; 
List<String> listDataHeader; 
HashMap<String, List<String>> listDataChild; 

public ExpandableListAdapter(Context context, List<String> expandableListTitle, 
          HashMap<String, List<String>> expandableListDetail) { 
    this.context = context; 
    this.expandableListTitle = expandableListTitle; 
    this.expandableListDetail = expandableListDetail; 
} 

@Override 
public Object getChild(int listPosition, int expandedListPosition) { 
    return this.expandableListDetail.get(this.expandableListTitle.get(listPosition)) 
      .get(expandedListPosition); 
} 

@Override 
public long getChildId(int listPosition, int expandedListPosition) { 
    return expandedListPosition; 
} 

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

    final String expandedListText = (String) getChild(listPosition, expandedListPosition); 

    if (convertView == null) { 
     LayoutInflater layoutInflater = (LayoutInflater) this.context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = layoutInflater.inflate(R.layout.list_item, null); 

    } 

    TextView expandedListTextView = (TextView) convertView 
      .findViewById(R.id.expandedListItem); 

    expandedListTextView.setText(expandedListText); 
    /*ExpandableListView elv = new ExpandableListView(context); 
    elv.setLayoutParams(new AbsListView.LayoutParams(AbsListView.LayoutParams.WRAP_CONTENT, AbsListView.LayoutParams.WRAP_CONTENT)); 
    elv.setAdapter(new ExpandableListAdapter(context,null,null)); 
    ((ViewGroup)convertView).addView(elv);*/  

    return convertView; 
} 


@Override 
public int getChildrenCount(int listPosition) { 
    return this.expandableListDetail.get(this.expandableListTitle.get(listPosition)) 
      .size(); 
} 

@Override 
public Object getGroup(int listPosition) { 
    return this.expandableListTitle.get(listPosition); 
} 

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

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

@Override 
public View getGroupView(int listPosition, boolean isExpanded, 
         View convertView, ViewGroup parent) { 
    String listTitle = (String) getGroup(listPosition); 


    if (convertView == null) { 
     LayoutInflater layoutInflater = (LayoutInflater) this.context. 
       getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = layoutInflater.inflate(R.layout.list_group, null); 
    } 

    TextView listTitleTextView = (TextView) convertView 
      .findViewById(R.id.listTitle); 

    listTitleTextView.setTypeface(null, Typeface.BOLD); 
    listTitleTextView.setText(listTitle); 

    return convertView; 
} 


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

@Override 
public boolean isChildSelectable(int listPosition, int expandedListPosition) { 
    return true; 
} 
} 

Ниже фрагмент активности кода с использованием фрагмента:

package com.em.crayonpediamoodlesiswa; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.Statement; 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.ExpandableListView; 
import android.widget.ExpandableListView.OnChildClickListener; 
import android.widget.Toast; 

public class MyCourses extends Fragment{ 
private static final String url = "jdbc:mysql://192.168.43.166:3306/moodle"; 
private static final String user = "emil"; 
private static final String pass = "emilhamep"; 
private int amount; 

ExpandableListAdapter la; 
ExpandableListView lv2; 
List<String> expandableListTitle; 
HashMap<String, List<String>> expandableListDetail; 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.my_courses, container, false); 

    lv2=(ExpandableListView)rootView.findViewById(R.id.expandableListViewChild); 

    prepareListDataMyCourse(); 

    la=new ExpandableListAdapter(getActivity(), expandableListTitle, expandableListDetail); 

    lv2.setAdapter(la); 

    //Menentukan aksi ketika diklik untuk setiap hasil fetch array 
    try{ 
     //Toast.makeText(getActivity(), "Jalan-jalan", Toast.LENGTH_LONG).show(); 
     int user_id = 5; 
     Class.forName("com.mysql.jdbc.Driver"); 
     Connection con=DriverManager.getConnection(url,user,pass); 

     Statement st = con.createStatement(); 
     ResultSet rschild=st.executeQuery("SELECT co.fullname FROM course co JOIN course_display codi WHERE codi.userid=" + user_id + " AND co.id= codi.course"); 
     final String[] a = null; 
     int counter=0; 
     while(rschild.next()) { 
      a[counter]=rschild.getString(1); 
      //my_course.add(rschild.getString(1)); 
      counter++; 
     }  


     /* lv2.setOnChildClickListener(new OnChildClickListener() { 

      @Override 
      public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, 
        int childPosition, long id) { 
       Toast.makeText(getActivity(), "Jalan", Toast.LENGTH_LONG).show(); 
        for(int b=0;b<a.length;b++){ 
         if(childPosition == b){ 
          Toast.makeText(getActivity(), a[b], Toast.LENGTH_LONG).show(); 
         } 
         Intent intent = new Intent(getActivity(),Classroom.class); 
         String logged_user=a[b].toString(); 

         intent.putExtra("username", logged_user); 
         startActivity(intent); 
        } 
        return false; 
      } 
     });*/ 

     OnChildClickListener occl = new OnChildClickListener() { 

      @Override 
      public boolean onChildClick(ExpandableListView parent, View v, 
        int groupPosition, int childPosition, long id) { 
       // TODO Auto-generated method stub 
       Toast.makeText(getActivity(), "Jalan", Toast.LENGTH_LONG).show(); 
       return true; 
      } 
     }; 
     lv2.setOnChildClickListener(occl); 

    } 
    catch(Exception e){ 
     e.printStackTrace(); 
     Toast.makeText(getActivity(), e.toString(), Toast.LENGTH_LONG); 
    } 
    return rootView; 
} 

private void prepareListDataMyCourse(){ 
    expandableListTitle = new ArrayList<String>(); 
    expandableListDetail = new HashMap<String, List<String>>(); 
    try{ 
     int user_id = 5; 
     Class.forName("com.mysql.jdbc.Driver"); 
     Connection con=DriverManager.getConnection(url,user,pass); 

     Statement st = con.createStatement();  

     //Query header expandable   

     List<String> my_course = new ArrayList<String>();   


     expandableListTitle.add("My Course");    


     //Query dapet list my course 
     ResultSet rschild=st.executeQuery("SELECT co.fullname FROM course co JOIN course_display codi WHERE codi.userid=" + user_id + " AND co.id= codi.course"); 

     while(rschild.next()) {    
      my_course.add(rschild.getString(1));     
     }     

     expandableListDetail.put(expandableListTitle.get(0), my_course); 

    }catch(Exception e){ 
     e.printStackTrace(); 
     Toast.makeText(getActivity(), e.toString(), Toast.LENGTH_LONG); 
    } 
} 



} 

ответ

0

Наносить это

OnChildClickListener occl = new OnChildClickListener() { 

     @Override 
     public boolean onChildClick(ExpandableListView parent, View v, 
       int groupPosition, int childPosition, long id) { 
      // TODO Auto-generated method stub 
      Toast.makeText(getActivity(), "Jalan", Toast.LENGTH_LONG).show(); 
      return false; 
     } 
    }; 
    lv2.setOnChildClickListener(occl); 

, если это не работает, то обратитесь этот учебник http://www.androidhive.info/2013/07/android-expandable-list-view-tutorial/

+0

Я следовал этой ссылке учебник, но до сих пор не работает – crayon

+0

вы можете использовать вернуть ложь ?? –

+0

Я изменил для возврата false, но все еще не работает – crayon

1
check your adapter isChildSelectable returns true or false.return it true 

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

уже возвращает true в isChildSelectable, но все еще не работает – crayon

+0

опубликовать полный код и код активации. –

+1

http://stackoverflow.com/questions/22067471/expandablelistview-in-fragment-expandable-list-not-display, пожалуйста, проверьте эту проблему. Ответ –

Смежные вопросы