0

私は Android の世界では初めてで、次のシナリオがあります。

Activity main.xml RelativeLayout があり、ExpandableListView 内にあります。

グループを展開すると、子のコンテンツが表示されます。これは example.xml です。

今、私はid btn_sendのexample.xml-layout 1ボタンを持っています。私の質問は、ボタンにアクセスする方法です?

Example.java 経由でボタンにアクセスしようとしましたが、btn_send が見つからないというエラーが表示されます。私は Main.java を試してみましたが、いくつかのエラーが発生しました。

前もって感謝します、

BR アリ

public class Main extends Activity {

ExpandableListView exv;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    exv = (ExpandableListView) findViewById(R.id.exv_main);
    exv.setAdapter(new MainAdapter(this));
    exv.setOnGroupExpandListener(new OnGroupExpandListener() {

        int previousGroup = -1;

        @Override
        public void onGroupExpand(int groupPosition) {
            if(groupPosition != previousGroup)
                exv.collapseGroup(previousGroup);
            previousGroup = groupPosition;
        }
    });

}
}

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>

そしてexample.xmlで

<Button
    android:id="@+id/btn_send"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="send" />

そしてExample.javaで

public class Example extends Activity {

@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");
        }
    }); 
}
}
4

2 に答える 2

0

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;
    }    

}
于 2013-09-25T11:55:12.540 に答える