0

プログラムで行を膨らませてテーブルを作成し、それらの行の各ビューにクリックリスナーを設定しようとしましたが、機能していないようです。

これは私のインフレータであり、クリックメソッドの呼び出し方法です。

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

    for (int i = 0; i < time.length; i++) {

        TableRow row = (TableRow) inflater.inflate(R.layout.week_view_cust,
                t_layout, false);
        TextView tv = (TextView) row.findViewById(R.id.time_week_tv);
        LinearLayout ll = (LinearLayout) row.findViewById(R.id.time_ll1);
        ll = (LinearLayout) row.findViewById(R.id.time_ll2);
        ll = (LinearLayout) row.findViewById(R.id.time_ll3);
        ll = (LinearLayout) row.findViewById(R.id.time_ll4);
        ll = (LinearLayout) row.findViewById(R.id.time_ll5);
        ll = (LinearLayout) row.findViewById(R.id.time_ll6);
        ll = (LinearLayout) row.findViewById(R.id.time_ll7);
        (new CustomListener()).onClick(ll);
        tv.setText("" + time[i]);
        t_layout.addView(row);

    }

そして、これは私のクリックリスナークラスです。

    public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.time_ll1:

        LinearLayout ll = (LinearLayout)v.findViewById(R.id.time_ll1);
        TextView tv = new TextView(v.getContext());
        tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
        tv.setTextSize(12);
        tv.setTextColor(000000);
        Log.i("============", "success");
        tv.setText("hello");
        ll.addView(tv);
        break;

    case R.id.time_ll2:
        break;
    case R.id.time_ll3:
        break;
    case R.id.time_ll4:
        break;
    case R.id.time_ll5:
        break;
    case R.id.time_ll6:
        break;
    case R.id.time_ll7:
        break;
    }

私は何が間違っているのですか?

4

2 に答える 2

1

次のように、各 LinearLayout に対してonClickListenerを設定する必要があると思います。

CustomListener が onClick() メソッドを実装していると推測する

LinearLayout ll = (LinearLayout) row.findViewById(R.id.time_ll1);
ll.setOnClickListener(new CustomListener());
ll = (LinearLayout) row.findViewById(R.id.time_ll2);
ll.setOnClickListener(new CustomListener());
ll = (LinearLayout) row.findViewById(R.id.time_ll3);
ll.setOnClickListener(new CustomListener());
ll = (LinearLayout) row.findViewById(R.id.time_ll4);
ll.setOnClickListener(new CustomListener());
ll = (LinearLayout) row.findViewById(R.id.time_ll5);
ll.setOnClickListener(new CustomListener());
ll = (LinearLayout) row.findViewById(R.id.time_ll6);
ll.setOnClickListener(new CustomListener());
ll = (LinearLayout) row.findViewById(R.id.time_ll7);
ll.setOnClickListener(new CustomListener());
于 2012-10-04T10:00:53.693 に答える
0

私が見る限り、あなたは設定していません。すべてのセルonClickListener を呼び出す必要がありますll.setOnClickListener(this);

于 2012-10-04T10:00:06.880 に答える