Android: высота строки Listview изменяется при нажатии на флажок, который он содержит - PullRequest
0 голосов
/ 29 января 2012

У меня есть действие, которое содержит один просмотр списка. Этот список отображает относительный план с растровым изображением и флажком, а когда растровое изображение недоступно, отображается текст.

Моя проблема со строками, которые не содержат растровое изображение. Когда я нажимаю на флажок, высота строки изменяется (увеличивается, когда флажок установлен, уменьшается, когда не отмечен)

activity.xml

    <?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:orientation="vertical" >

    <ListView
        android:id="@+id/myListView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:divider="@drawable/gradient_divider"
        android:dividerHeight="1dp" />
</LinearLayout>

row.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/banner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:adjustViewBounds="true"
        android:layout_toLeftOf="@+id/registrationCheckBox"
        android:filter="true" >
    </ImageView>

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_centerVertical="true"
        android:layout_gravity="left"
        android:paddingLeft="5dp"
        android:layout_toLeftOf="@+id/registrationCheckBox" >
    </TextView>

    <CheckBox
        android:id="@+id/registrationCheckBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"      
        android:layout_centerVertical="true"  
        android:clickable="false"
        android:focusable="false"
        android:paddingRight="5dp" >
    </CheckBox>

</RelativeLayout>

Код моей активности

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity);

        hideActionBar(); 

        // init the controls
        initControls();

        // populate the listView
        this.adapter = new RegistrationAdapter(this, refreshContent());     
        this.listView.setAdapter(this.adapter);

        this.listView.setItemsCanFocus(false); 
        this.listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        this.listView.setOnItemClickListener(
            new ListView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                        ViewHolder viewHolder = (ViewHolder) view.getTag();

...
                    }
            }
    );  

    }

Есть идеи о том, как запретить изменение высоты строки при установке флажка?

Ответы [ 2 ]

1 голос
/ 29 января 2012

Я думаю, что вам не хватает важной части этого кода, и это код Адаптера.

Как вы справляетесь с переключением между растровым изображением и текстом?

0 голосов
/ 29 января 2012

Возможно, установите ImageView на фиксированную высоту (достаточно высокую, чтобы поместиться в любое фактическое изображение), или предоставьте фиктивное невидимое изображение, когда нет реального изображения для показа.

...