gpt4 book ai didi

java - Android ExpandableList onChildClickListener 在 Fragment 中不起作用

转载 作者:行者123 更新时间:2023-12-01 11:29:05 27 4
gpt4 key购买 nike

我有关于 onChildClickListener 的代码,如下面的代码 fragment

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并没有出现,为什么会出现呢?

根据2个文件,(抱歉,帖子很长,我希望内容清楚)

下面的适配器代码 fragment :

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 的 Activity 代码 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);
}
}



}

最佳答案

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

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

关于java - Android ExpandableList onChildClickListener 在 Fragment 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30570693/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com