Java ExpandableListView父级中的不同切换意图-前一个不';行不通
我正在尝试创建一个ExpandibleListView,其意图是切换到新类。当只使用一个开关时,没有问题,但是当我希望不同的家长切换不同的类时,只有一个可以工作,另一个保持为空(它的箭头向上和向下移动,但什么也没有发生)。我怎样才能让他们一起工作 这是我的密码: expandibleListatAdapter.javaJava ExpandableListView父级中的不同切换意图-前一个不';行不通,java,android,android-intent,android-listview,expandablelistview,Java,Android,Android Intent,Android Listview,Expandablelistview,我正在尝试创建一个ExpandibleListView,其意图是切换到新类。当只使用一个开关时,没有问题,但是当我希望不同的家长切换不同的类时,只有一个可以工作,另一个保持为空(它的箭头向上和向下移动,但什么也没有发生)。我怎样才能让他们一起工作 这是我的密码: expandibleListatAdapter.java import android.graphics.Typeface; import android.view.LayoutInflater; import android.view
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import java.util.HashMap;
import java.util.List;
import android.content.Context;
import android.widget.TextView;
public class ExpandableListAdapter extends BaseExpandableListAdapter {
private Context context;
private List<String> listDataHeader;
private HashMap<String,List<String>> listHashMap;
public ExpandableListAdapter(Context context, List<String> listDataHeader, HashMap<String, List<String>> listHashMap) {
this.context = context;
this.listDataHeader = listDataHeader;
this.listHashMap = listHashMap;
}
@Override
public int getGroupCount() {
return listDataHeader.size();
}
@Override
public int getChildrenCount(int i) {
return listHashMap.get(listDataHeader.get(i)).size();
}
@Override
public Object getGroup(int i) {
return listDataHeader.get(i);
}
@Override
public Object getChild(int i, int i1) {
return listHashMap.get(listDataHeader.get(i)).get(i1); // i = group item , i1= ChildItem
}
@Override
public long getGroupId(int i) {
return i;
}
@Override
public long getChildId(int i, int i1) {
return i1;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public View getGroupView(int i, boolean b, View view, ViewGroup ViewGroup) {
String headerTitle = (String)getGroup(i);
if(view == null)
{
LayoutInflater inflater = (LayoutInflater)this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.list_group,null);
}
TextView lblListHeader = (TextView)view.findViewById(R.id.lblListHeader);
lblListHeader.setTypeface(null, Typeface.BOLD);
lblListHeader.setText(headerTitle);
return view;
}
@Override
public View getChildView(int i, int i1, boolean b, View view, ViewGroup ViewGroup) {
final String childText = (String)getChild(i,i1);
if(view == null)
{
LayoutInflater inflater = (LayoutInflater)this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.list_item,null);
}
TextView txtListChild = (TextView)view.findViewById(R.id.lblListItem);
txtListChild.setText(childText);
return view;
}
@Override
public boolean isChildSelectable(int i, int i1) {
return true;
}
}
导入android.graphics.Typeface;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.BaseExpandableListAdapter;
导入java.util.HashMap;
导入java.util.List;
导入android.content.Context;
导入android.widget.TextView;
公共类ExpandableListAdapter扩展了BaseExpandableListAdapter{
私人语境;
私有列表listDataHeader;
私有HashMap列表HashMap;
公共ExpandableListAdapter(上下文上下文、列表listDataHeader、HashMap listHashMap){
this.context=上下文;
this.listDataHeader=listDataHeader;
this.listHashMap=listHashMap;
}
@凌驾
public int getGroupCount(){
返回listDataHeader.size();
}
@凌驾
公共整数getChildrenCount(整数i){
返回listHashMap.get(listDataHeader.get(i)).size();
}
@凌驾
公共对象getGroup(inti){
返回listDataHeader.get(i);
}
@凌驾
公共对象getChild(inti,inti1){
返回listHashMap.get(listDataHeader.get(i)).get(i1);//i=group项,i1=ChildItem
}
@凌驾
公共长getGroupId(inti){
返回i;
}
@凌驾
公共长getChildId(inti,inti1){
返回i1;
}
@凌驾
公共布尔表ID(){
返回false;
}
@凌驾
公共视图getGroupView(int i、布尔b、视图视图、视图组视图组){
String headerTitle=(String)getGroup(i);
如果(视图==null)
{
LayoutFlater充气器=(LayoutFlater)this.context.getSystemService(context.LAYOUT\u充气器\u服务);
视图=充气机充气(右布局列表组,空);
}
TextView lblListHeader=(TextView)view.findViewById(R.id.lblListHeader);
lblListHeader.setTypeface(null,Typeface.BOLD);
lblListHeader.setText(标题);
返回视图;
}
@凌驾
公共视图getChildView(int i、int i1、布尔b、视图视图、视图组视图组){
最后一个字符串childText=(String)getChild(i,i1);
如果(视图==null)
{
LayoutFlater充气器=(LayoutFlater)this.context.getSystemService(context.LAYOUT\u充气器\u服务);
视图=充气机。充气(右布局。列表项,空);
}
TextView txtListChild=(TextView)view.findViewById(R.id.lblListItem);
setText(childText);
返回视图;
}
@凌驾
公共布尔值是可选择的(int i,int i1){
返回true;
}
}
MainActivity.java
public class MainActivity extends AppCompatActivity
{
private ExpandableListView listView;
private ExpandableListAdapter listAdapter;
private List<String> listDataHeader;
private HashMap<String,List<String>> listHash;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ExpandableListView)findViewById(R.id.lvExp);
initData();
listAdapter = new ExpandableListAdapter(this,listDataHeader,listHash);
listView.setAdapter(listAdapter);
}
private void initData() {
listDataHeader = new ArrayList<>();
listHash = new HashMap<>();
listDataHeader.add("Line One");
listDataHeader.add("Line Two");
List<String> genel = new ArrayList<>();
**//The problem starts here**
listView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
final String selected = (String) listAdapter.getGroup(groupPosition);
Intent intent;
switch (selected) {
case "Line One":
intent = new Intent(MainActivity.this,LineOne.class);
startActivity(intent);
break;
}
return false; //return true doesn't let the other parents to open.
}
});
List<String> terims = new ArrayList<>();
listView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
final String terims = (String) listAdapter.getGroup(groupPosition);
Intent niyet;//I used "intent" instead of "niyet" as same above but nothing has changed.
switch (terims) {
case "Line Two":
niyet = new Intent(MainActivity.this, LineTwo.class);
startActivity(niyet);
break;
}
return false;
}
});
listHash.put(listDataHeader.get(0),genel);
listHash.put(listDataHeader.get(1),terims);
}
}
public类MainActivity扩展了AppCompatActivity
{
私有可扩展listView listView;
私有可扩展listAdapter listAdapter;
私有列表listDataHeader;
私有哈希映射列表哈希;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=(ExpandableListView)findViewById(R.id.lvExp);
initData();
listAdapter=新的ExpandableListAdapter(这个,listDataHeader,listHash);
setAdapter(listAdapter);
}
私有void initData(){
listDataHeader=新的ArrayList();
listHash=新的HashMap();
添加(“第一行”);
添加(“第二行”);
List genel=new ArrayList();
**//问题从这里开始**
listView.setOnGroupClickListener(新的可扩展listView.OnGroupClickListener(){
@凌驾
公共布尔onGroupClick(ExpandableListView父视图、视图v、int-groupPosition、长id){
选择的最终字符串=(字符串)listAdapter.getGroup(groupPosition);
意图;
开关(选定){
案例“第一行”:
意图=新意图(MainActivity.this,LineOne.class);
星触觉(意向);
打破
}
return false;//return true不允许其他父级打开。
}
});
List terims=new ArrayList();
listView.setOnGroupClickListener(新的可扩展listView.OnGroupClickListener(){
@凌驾
公共布尔onGroupClick(ExpandableListView父视图、视图v、int-groupPosition、长id){
最终字符串terims=(字符串)listAdapter.getGroup(groupPosition);
Intent-niyet;//如上所述,我使用了“Intent”而不是“niyet”,但没有任何变化。
开关(terims){
案例“第二行”:
niyet=新意图(MainActivity.this,LineTwo.class);
星触觉;
打破
}
返回false;
}
});
put(listDataHeader.get(0),genel);
put(listDataHeader.get(1),terims);
}
}
您不能设置2个OnGroupClickListeners。第二个取消了第一个。您应该设置一个侦听器,然后在一个侦听器中检查两组条件。非常感谢,我将第二个开关案例替换为第一个onGroupClick,两个都可以工作。愿上帝保佑你