0

各リスト項目の xml に ToggleButton を持つカスタム リスト アダプターがあるため、これはリスト内の 2 つの項目の例です。

ここに画像の説明を入力

写真を投稿するのに十分な評判がないため、リンクを使用しました。関係のない部分はぼやけています。各リスト項目のレイアウトでは、ToggleButton の ID は "toggleButton1" ですが、これは問題です。私が作成した "onTogglePress()" という onClick 関数ではToggleButton activetoggle = (ToggleButton)this.findViewById(R.id.toggleButton1);、トグルに関する情報を取得するために使用するときに、常に最初の関数を参照します。 isChecked() かどうかなどのボタン。トグル プレスを使用して、実際のリスト項目に関連する情報を変更できるように、各リスト項目を個別にターゲットにするにはどうすればよいですか?

編集: 要求されたカスタム リスト アダプターからの getView() クラスは次のとおりです。

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView; //this is listview_item_row

        if(row == null)
        {
            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
            row = inflater.inflate(layoutResourceId, parent, false);

            holder = new ListHolder();
            holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);
            holder.txtTime = (TextView)row.findViewById(R.id.txtTime);
            holder.txtDays = (TextView)row.findViewById(R.id.txtDays);
            holder.txtVibrate = (TextView)row.findViewById(R.id.txtVibrate);
            holder.activButton = (ToggleButton)row.findViewById(R.id.toggleButton1);

            row.setTag(holder);
        }
        else
        {
            holder = (ListHolder)row.getTag();
        }

        ListObject currentobj = storagelist.returnSchedule(position);
        holder.txtTitle.setText(currentobj.returnName());
        holder.txtTime.setText(currentobj.timestostring());
        holder.txtDays.setText(currentobj.daystostring());
        holder.txtVibrate.setText(currentobj.vibratetostring());
        holder.activButton.setChecked(currentobj.isActive());

        Typeface customfont = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Light.ttf");
        holder.txtTitle.setTypeface(customfont);
        holder.txtTime.setTypeface(customfont);
        holder.txtDays.setTypeface(customfont);
        holder.txtVibrate.setTypeface(customfont);


        if(currentobj.returnVibrate())
            holder.txtVibrate.setTextColor(Color.parseColor("#35b4e3"));    //green
        else
            holder.txtVibrate.setTextColor(Color.parseColor("#8C8C8C"));        //red

        return row;
    }
4

0 に答える 0