我有关于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);
但吐司没有出现,为什么会出现呢?
取决于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;
}
}
使用Fragment的以下代码段活动代码:
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 :(得分:1)
check your adapter isChildSelectable returns true or false.return it true
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
答案 1 :(得分: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/