Java 自定义微调器不';t更新值

Java 自定义微调器不';t更新值,java,android,checkbox,spinner,adapter,Java,Android,Checkbox,Spinner,Adapter,我有一个android微调器,带有自定义布局和自定义适配器 当我点击微调器时,它会显示一个复选按钮列表。我已经将CheckboxListener关联到每个复选框,因此当选中复选框时,我希望更改微调器显示的值 在CheckboxListener中,我引用微调器的TextView(微调器显示的文本)。当我在适配器中使用方法setText()时,显示的值会发生变化,但当我在CheckBoxListener中使用该方法时,不会显示设置的文本。我不明白为什么 以下是代码的一部分: onCreate: pr

我有一个android微调器,带有自定义布局和自定义适配器

当我点击微调器时,它会显示一个复选按钮列表。我已经将CheckboxListener关联到每个复选框,因此当选中复选框时,我希望更改微调器显示的值

在CheckboxListener中,我引用微调器的TextView(微调器显示的文本)。当我在适配器中使用方法
setText()
时,显示的值会发生变化,但当我在CheckBoxListener中使用该方法时,不会显示设置的文本。我不明白为什么

以下是代码的一部分:

onCreate:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_filter_apply);

        //get spinner reference
        Spinner spinnerLane = (Spinner) findViewById(R.id.filt_apply_spinner_lane);

        //create adapter
        SpinnerAdapter adapterLane = new SpinnerAdapter(FilterApplyActivity.this,R.layout.spinner_row_layout,R.array.lanes_array,"Lane");

        //assegna gli adapter
        spinnerLane.setAdapter(adapterLane);

    }
public class CheckBoxListener implements CompoundButton.OnCheckedChangeListener{
    String text;
    TextView txtView;

    public CheckBoxListener(TextView txt){
        txtView = txt;
    }

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        text = "";
        System.out.println("row gettext 2: " + txtView.getText()); //when i tap on a chkbox it prints: "This is a text"
        if(isChecked == true){
            text = "bar";
            txtView.setText(text);
            System.out.println("txt gettext: " + txtView.getText()); //it prints: "bar"
            //txtView.invalidate();
        }
    }
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/very_dark_gray"
    android:gravity="center"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/spinner_row_txt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="1dp"
        android:textSize="13dp"
        android:text="foo"
        android:textColor="@color/orange_words" />

</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/very_dark_gray"
    android:gravity="center"
    android:orientation="horizontal" >

    <CheckBox
        android:id="@+id/spinner_row_chk"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="1dp"
        android:textColor="@color/orange_words"
        android:textSize="13dp" />

</LinearLayout>
自定义适配器:

class SpinnerAdapter extends ArrayAdapter {

    LayoutInflater inflater;
    String[] data;
    CheckBoxListener chkboxListener;
    TextView displayedText;

    //Constructor
    {.....}

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View layout = inflater.inflate(R.layout.spinner_row_layout, parent, false);
        TextView row = (TextView) layout.findViewById(R.id.spinner_row_txt);
        displayedText = row;
        displayedText.setText("This is a text");
        row.setTypeface(custom_font);
        return layout;
    }

    @Override
    public View getDropDownView(int position, View convertView, ViewGroup parent) {
        View layout = inflater.inflate(R.layout.spinner_row_layout_check, parent, false);
        CheckBox row = (CheckBox) layout.findViewById(R.id.spinner_row_chk);
        row.setTag(position);
        chkboxListener = new CheckBoxListener(displayedText);
        row.setOnCheckedChangeListener(chkboxListener);     
        row.setText(data[position]);
        row.setTypeface(custom_font);
        return layout;
    }
}
自定义侦听器:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_filter_apply);

        //get spinner reference
        Spinner spinnerLane = (Spinner) findViewById(R.id.filt_apply_spinner_lane);

        //create adapter
        SpinnerAdapter adapterLane = new SpinnerAdapter(FilterApplyActivity.this,R.layout.spinner_row_layout,R.array.lanes_array,"Lane");

        //assegna gli adapter
        spinnerLane.setAdapter(adapterLane);

    }
public class CheckBoxListener implements CompoundButton.OnCheckedChangeListener{
    String text;
    TextView txtView;

    public CheckBoxListener(TextView txt){
        txtView = txt;
    }

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        text = "";
        System.out.println("row gettext 2: " + txtView.getText()); //when i tap on a chkbox it prints: "This is a text"
        if(isChecked == true){
            text = "bar";
            txtView.setText(text);
            System.out.println("txt gettext: " + txtView.getText()); //it prints: "bar"
            //txtView.invalidate();
        }
    }
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/very_dark_gray"
    android:gravity="center"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/spinner_row_txt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="1dp"
        android:textSize="13dp"
        android:text="foo"
        android:textColor="@color/orange_words" />

</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/very_dark_gray"
    android:gravity="center"
    android:orientation="horizontal" >

    <CheckBox
        android:id="@+id/spinner_row_chk"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="1dp"
        android:textColor="@color/orange_words"
        android:textSize="13dp" />

</LinearLayout>
spinner\u row\u layout.xml:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_filter_apply);

        //get spinner reference
        Spinner spinnerLane = (Spinner) findViewById(R.id.filt_apply_spinner_lane);

        //create adapter
        SpinnerAdapter adapterLane = new SpinnerAdapter(FilterApplyActivity.this,R.layout.spinner_row_layout,R.array.lanes_array,"Lane");

        //assegna gli adapter
        spinnerLane.setAdapter(adapterLane);

    }
public class CheckBoxListener implements CompoundButton.OnCheckedChangeListener{
    String text;
    TextView txtView;

    public CheckBoxListener(TextView txt){
        txtView = txt;
    }

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        text = "";
        System.out.println("row gettext 2: " + txtView.getText()); //when i tap on a chkbox it prints: "This is a text"
        if(isChecked == true){
            text = "bar";
            txtView.setText(text);
            System.out.println("txt gettext: " + txtView.getText()); //it prints: "bar"
            //txtView.invalidate();
        }
    }
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/very_dark_gray"
    android:gravity="center"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/spinner_row_txt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="1dp"
        android:textSize="13dp"
        android:text="foo"
        android:textColor="@color/orange_words" />

</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/very_dark_gray"
    android:gravity="center"
    android:orientation="horizontal" >

    <CheckBox
        android:id="@+id/spinner_row_chk"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="1dp"
        android:textColor="@color/orange_words"
        android:textSize="13dp" />

</LinearLayout>

spinner\u row\u layout\u check.xml:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_filter_apply);

        //get spinner reference
        Spinner spinnerLane = (Spinner) findViewById(R.id.filt_apply_spinner_lane);

        //create adapter
        SpinnerAdapter adapterLane = new SpinnerAdapter(FilterApplyActivity.this,R.layout.spinner_row_layout,R.array.lanes_array,"Lane");

        //assegna gli adapter
        spinnerLane.setAdapter(adapterLane);

    }
public class CheckBoxListener implements CompoundButton.OnCheckedChangeListener{
    String text;
    TextView txtView;

    public CheckBoxListener(TextView txt){
        txtView = txt;
    }

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        text = "";
        System.out.println("row gettext 2: " + txtView.getText()); //when i tap on a chkbox it prints: "This is a text"
        if(isChecked == true){
            text = "bar";
            txtView.setText(text);
            System.out.println("txt gettext: " + txtView.getText()); //it prints: "bar"
            //txtView.invalidate();
        }
    }
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/very_dark_gray"
    android:gravity="center"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/spinner_row_txt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="1dp"
        android:textSize="13dp"
        android:text="foo"
        android:textColor="@color/orange_words" />

</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/very_dark_gray"
    android:gravity="center"
    android:orientation="horizontal" >

    <CheckBox
        android:id="@+id/spinner_row_chk"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="1dp"
        android:textColor="@color/orange_words"
        android:textSize="13dp" />

</LinearLayout>

编辑


我需要的是,当我检查“中等”项目,如在图片中显示的文本“这是一个文本”与任意文本的变化

无论何时更改适配器中的列表,都应在适配器上调用.notifyDataSetChanged()。要在代码中实现这一点:首先,更改CheckBoxListener的构造函数,并将适配器作为参数包含在内。然后,获取适配器列表并更改要更改的项。最后,在适配器上调用.notifyDataSetChanged()。可能我的问题不清楚。我不想更改适配器填充视图的数据。我希望在选中下拉菜单中的复选框时更改微调器的值。我将用图片编辑我的问题,使其更清晰。