最初の質問とAndroidの初心者-うまくいけば、それは私が完全に見逃した簡単な解決策があることを意味します-ここに期待しています...ここに行きます。
カスタム BaseExpandableListAdapter を使用して ExpandableListView を駆動し、アダプター内で GetChildView メソッドをオーバーライドして、5 つのボタンを持つカスタムの子を表示しています。
public class ExpandableListAdapter extends BaseExpandableListAdapter {
private Context context;
private ArrayList<String> groups;
private ArrayList<ArrayList<String>> children;
private int setCount;
private int currentSetNumber;
...
public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.child_layout, null);
parent.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
}
Button bPlus = (Button) convertView.findViewById(R.id.btnAddSet);
if(childPosition == 0){
Button bSetPlace = (Button) convertView.findViewById(R.id.bSetPlace1);
bSetPlace.setText("Set 1");
bSetPlace.setOnClickListener(new View.OnClickListener(){
***public void onClick(View v) {
// TODO Auto-generated method stub
Intent myIntent = new Intent(context,WeightEntryDialog.class);
context.startActivity(myIntent);
}***
});
... remainder of method (not relevant)
これまでのところ何も問題はありませんが、子ボタンに配置された onClick メソッドでスタックしているようです。私がやりたいのは、起動しているインテント (ダイアログ) から結果を取得することです。理想的には、startActivityForResult を呼び出しますが、使用可能なコンテキストからそのようなメソッドはありません。また、匿名クラスの範囲によっても制限されています。ダイアログは表示されていますが、そこから値を取得できません。さらに、フィードバックがないため、ダイアログがいつ閉じられたのかを特定できません。
ダイアログから 2 つの整数を返したいと思います。ダイアログコードのいずれかが関連しているかどうかはわかりませんが、ヘッダーは次のとおりです。
public class WeightEntryDialog extends Activity {
BaseExpandableListAdapter クラスに行きすぎましたか? 他の場所で実際に行う必要があることをアダプターで実行しようとしていますか?展開可能なリストで子アイテムの制御を維持することが重要です。うまくいけば、私は明確で、誰かが何らかのガイダンスを提供できます。本当にありがとう。