1

データベースから照会された名前のリストを(リストビューではなく)リストに入れる必要があります。カスタムビューでlinearlayoutを膨らませることでそれを行うことができます。カスタムビューでレイアウトを膨らませるメソッドがある新しいクラスを作成しました。その方法では、onclicklistenerを実装しましたが、機能していません。コード:

public static void showPeopleInvitedList(Context context, View view, final LinearLayout layout) {
    dbAdapter = new DatabaseHandler(context);
    String[] ENTRIES = dbAdapter.getItems("user_friend_name");
    for (int i = 0; i < 5; i++ ) {
        LayoutInflater inflator = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflator.inflate(R.layout.people, layout, false);

        view.setId(layout.getChildCount() + 1);
        params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);

        view.setLayoutParams(params);
        view.setOnClickListener(myClickListener);
        layout.addView(view, 0, params);    


    }

    myClickListener = new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Log.d("click", "clicked");
            layout.removeView(v);
        }
    };
}

しかし、onclicklistenerは機能していません。私はメインアクティビティでこのメソッドを呼び出しています。このメソッドは、LinearLayoutを拡張するクラス内にあります。何か提案はありますか?

4

1 に答える 1

1

myClickListenerをまだインスタンス化していないため、ビューをに設定していonClickListenerますnullfor初期化をループの前に移動します。

public static void showPeopleInvitedList(Context context, View view, final LinearLayout layout) {
    dbAdapter = new DatabaseHandler(context);
    String[] ENTRIES = dbAdapter.getItems("user_friend_name");

    myClickListener = new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Log.d("click", "clicked");
            layout.removeView(v);
        }
    };
    for (int i = 0; i < 5; i++ ) {
        LayoutInflater inflator = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflator.inflate(R.layout.people, layout, false);

        view.setId(layout.getChildCount() + 1);
        params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);

        view.setLayoutParams(params);
        view.setOnClickListener(myClickListener);
        layout.addView(view, 0, params);    


    }

}

于 2012-09-28T19:12:10.427 に答える