4

類似の質問が 1 つだけ見つかりましたが、役に立ちませんでした。私は立ち往生しているので、あなたが私を助けてくれることを願っています。

これは私のカスタム アダプターです (関連する部分のみ)。

MyExpandableListAdapter:

public class MyExpandableListAdapter extends BaseExpandableListAdapter {

    //...

    @Override
    public View getChildView(int groupPosition, int childPosition,
            boolean isLastChild, View view, ViewGroup parent) {     
        ChildInfo childInfo = (ChildInfo) getChild(groupPosition, childPosition);
        if (view == null) {
            LayoutInflater infalInflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = infalInflater.inflate(R.layout.prisustva_detaljno_child_row,
                    null);
        }

        Button delete = (Button) view.findViewById(R.id.delete);
        delete.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                RelativeLayout Rl = (RelativeLayout) v.getParent();
                TextView id = (TextView) Rl.findViewById(R.id.id_prisustvo);
                PrisustvaAdapter deleteByID = new PrisustvaAdapter(context);

                deleteByID.openToWrite();
                deleteByID.openToRead();
                deleteByID.deleteID(id .getText().toString());
                deleteByID.close();

                Toast.makeText(context, "Successfully deleted!",
                        Toast.LENGTH_LONG).show();
            }
        });

        // ...
        return view;
    }

// ...
}

ご覧のとおり、のすべての子行にボタンがありますExpandableListView。そのボタンをクリックすると、データベースで削除プロセスがトリガーされます。また、アダプター内から削除を行う必要があることもわかります。これは、子行内のボタンのクリック イベントを作成できるのはアダプター内だけだからです。ExpandableListViewデータベースからデータを削除するときに、どのように更新すればよいですか? アダプターの内側から行う必要がありますか? そうでない場合、代替手段は何ですか?

PS: さらにコードが必要な場合は、お知らせください。

4

1 に答える 1