Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 可扩展列表视图&;子活动_Java_Android_Xml - Fatal编程技术网

Java 可扩展列表视图&;子活动

Java 可扩展列表视图&;子活动,java,android,xml,Java,Android,Xml,我是Android世界的新手,我有以下场景: 我有一个Activity main.xml RelativeLayout,位于可扩展列表视图中 当我展开一个组时,它会显示子组的内容:这是example.xml 现在我看到了id为btn_send的example.xml-layout 1按钮,我的问题是如何访问该按钮 我试图通过Example.java访问该按钮,但发现无法找到btn_发送的错误。我尝试了Main.java,但发现了一些错误 提前谢谢大家, 溴 阿里 在MainAdapter类中 @

我是Android世界的新手,我有以下场景:

我有一个Activity main.xml RelativeLayout,位于可扩展列表视图中

当我展开一个组时,它会显示子组的内容:这是example.xml

现在我看到了id为btn_send的example.xml-layout 1按钮,我的问题是如何访问该按钮

我试图通过Example.java访问该按钮,但发现无法找到btn_发送的错误。我尝试了Main.java,但发现了一些错误

提前谢谢大家,

溴 阿里

在MainAdapter类中

@Override
public View getChildView(int groupPosition, int childPosition,
        boolean isLastChild, View convertView, ViewGroup parent) {

    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    RelativeLayout layout = new RelativeLayout(context);
    ImageView iv = new ImageView(context);


    RelativeLayout.LayoutParams llpImage = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT,
            RelativeLayout.LayoutParams.WRAP_CONTENT);

    layout.setGravity(Gravity.CENTER | Gravity.TOP);


        switch (groupPosition){

            case 0:

                layout = (RelativeLayout) inflater.inflate(childList[groupPosition][childPosition], null);


            break;

            case 1:

            break; 
            case 2:

                break; 
        }
        return layout;
}
还有main.xml

<ExpandableListView
    android:id="@+id/exv_main"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:layout_marginLeft="15dp"
    android:layout_marginRight="15dp"
    android:layout_marginTop="20dp"
    android:background="#CDCDD0"
    android:divider="@android:color/transparent"
    android:listSelector="#CDCDD0"
    android:dividerHeight="1dip"
    android:cacheColorHint="#CDCDD0"
    android:childDivider="#CDCDD0"
    >
</ExpandableListView>

您必须在getChildView方法中为按钮设置onClickListener:

public class MyExpandableAdapter extends BaseExpandableListAdapter {

    private final SparseArray<Group> groups;
    public Activity activity;
    public LayoutInflater inflater;

    public MyExpandableAdapter(Activity activity, SparseArray<Group> groups) {
        this.groups = groups;
        this.activity = activity;
        this.inflater = activity.getLayoutInflater();
    }

    @Override
    public View getChildView(int groupPosition, final int childPosition, boolean  isLastChild, View convertView, ViewGroup parent) {
        if (convertView == null) {
          convertView = inflater.inflate(R.layout.rowlayout_details, null);
        }
        TextView text = (TextView) convertView.findViewById(R.id.textView1);
        text.setText("content");

        Button b = (Button) convertView.findViewById(R.id.button);
        b.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                // implement functionality

            }
        });

        return convertView;
    }    

}
公共类MyExpandableAdapter扩展了BaseExpandableListAdapter{
私人最终Sparsarray集团;
公共活动;
公共场所;充气机;
公共MyExpandableAdapter(活动、SparSeaRay组){
这个组=组;
这个。活动=活动;
this.inflater=activity.getLayoutFlater();
}
@凌驾
公共视图getChildView(int-groupPosition,final int-childPosition,boolean isLastChild,View-convertView,ViewGroup-parent){
if(convertView==null){
convertView=充气机。充气(R.layout.rowlayout_详细信息,空);
}
TextView text=(TextView)convertView.findViewById(R.id.textView1);
text.setText(“内容”);
按钮b=(按钮)convertView.findViewById(R.id.Button);
b、 setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图arg0){
//实现功能
}
});
返回视图;
}    
}

@Kuba Spatny感谢您的帮助,我按照以下代码解决了我的问题。。。也许还有其他方法可以解决这个问题,但这是我的解决方案:

@Override
public View getChildView(int groupPosition, int childPosition,
        boolean isLastChild, View convertView, ViewGroup parent) {

    LayoutInflater inflater; 

    switch (groupPosition) {
    case 0:
        if (convertView == null) {
            inflater  = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(childLayout[groupPosition][childPosition], null);
            Button btn1 = (Button) convertView.findViewById(R.id.btn_send);
            btn1.setOnClickListener(new OnClickListener() {

                            @Override
                            public void onClick(View v) {
                                v.getContext().startActivity(new Intent(context, ExampTest1.class));
                            }
                        });
            }



        break;
    case 1:
            inflater  = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(childLayout[groupPosition][childPosition], null);
            Button btn1 = (Button) convertView.findViewById(R.id.btn_send);
            btn1.setOnClickListener(new OnClickListener() {

                            @Override
                            public void onClick(View v) {
                                v.getContext().startActivity(new Intent(context, ExampTest2.class));
                            }
                        });
        break;
    case 2:
        if (convertView == null) {
            inflater  = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(childLayout[groupPosition][childPosition], null);
            Button btn1 = (Button) convertView.findViewById(R.id.btn_send);
            btn1.setOnClickListener(new OnClickListener() {

                            @Override
                            public void onClick(View v) {
                                v.getContext().startActivity(new Intent(context, ExampTest3.class));
                            }
                        });
        break;
    }

    return convertView;
}

请发布您的代码片段和XML布局。@Andreacarre谢谢您的回答。但我不知道如何粘贴我的代码片段:-(太长了!粘贴代码中最相关的部分,即与btn_send object连接的部分。@Ali下次尝试编辑您的问题并将代码添加到那里。.这次我为您准备好了;记得下次按@Kuba所说的那样自己准备好。谢谢您的回答,但我在交换机机箱中有不止一个布局,所以我如何才能做到这一点?感谢you@Ali哦,是的,我明白了,在你发布代码之前我已经回答了。但是我现在在课堂上,所以我不能马上回答你的评论。没问题,谢谢你的帮助,如果我解决了,我会告诉你,否则你可以建议你的解决方案:-)
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.example);

    final Button btn = (Button) findViewById(R.id.btn_send);    

    btn.setOnClickListener(new OnClickListener() {      
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            btn.setText("huhu");
        }
    }); 
}
}
public class MyExpandableAdapter extends BaseExpandableListAdapter {

    private final SparseArray<Group> groups;
    public Activity activity;
    public LayoutInflater inflater;

    public MyExpandableAdapter(Activity activity, SparseArray<Group> groups) {
        this.groups = groups;
        this.activity = activity;
        this.inflater = activity.getLayoutInflater();
    }

    @Override
    public View getChildView(int groupPosition, final int childPosition, boolean  isLastChild, View convertView, ViewGroup parent) {
        if (convertView == null) {
          convertView = inflater.inflate(R.layout.rowlayout_details, null);
        }
        TextView text = (TextView) convertView.findViewById(R.id.textView1);
        text.setText("content");

        Button b = (Button) convertView.findViewById(R.id.button);
        b.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                // implement functionality

            }
        });

        return convertView;
    }    

}
@Override
public View getChildView(int groupPosition, int childPosition,
        boolean isLastChild, View convertView, ViewGroup parent) {

    LayoutInflater inflater; 

    switch (groupPosition) {
    case 0:
        if (convertView == null) {
            inflater  = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(childLayout[groupPosition][childPosition], null);
            Button btn1 = (Button) convertView.findViewById(R.id.btn_send);
            btn1.setOnClickListener(new OnClickListener() {

                            @Override
                            public void onClick(View v) {
                                v.getContext().startActivity(new Intent(context, ExampTest1.class));
                            }
                        });
            }



        break;
    case 1:
            inflater  = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(childLayout[groupPosition][childPosition], null);
            Button btn1 = (Button) convertView.findViewById(R.id.btn_send);
            btn1.setOnClickListener(new OnClickListener() {

                            @Override
                            public void onClick(View v) {
                                v.getContext().startActivity(new Intent(context, ExampTest2.class));
                            }
                        });
        break;
    case 2:
        if (convertView == null) {
            inflater  = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(childLayout[groupPosition][childPosition], null);
            Button btn1 = (Button) convertView.findViewById(R.id.btn_send);
            btn1.setOnClickListener(new OnClickListener() {

                            @Override
                            public void onClick(View v) {
                                v.getContext().startActivity(new Intent(context, ExampTest3.class));
                            }
                        });
        break;
    }

    return convertView;
}