2010-12-11 4 views
1

Имея проблему с CheckedTextView, я не могу найти решение. Я даже не совсем уверен, что происходит.Android ListView CheckedTextView Мигает

У меня есть пользовательский ListView, чьи строки содержат TextViews и CheckedTextView.

row.xml

<CheckedTextView 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:id="@+id/title" 
    android:text="Name" 
    android:gravity="center_vertical" 
    android:paddingRight="6dip" 
    android:typeface="sans" 
    android:checkMark="?android:attr/textCheckMark" 
    android:textSize="16sp" 
    android:textStyle="bold"/> 

MyAdapterView.java

public class RuleAdapterView extends LinearLayout 
{ 
    private CheckedTextView title; 

    ... 

    title = (CheckedTextView)v.findViewById(R.id.title); 
    title.setText(entry.getName()); 
    title.setChecked(entry.isActive()); 

    // setup a listener for the checkbox 
    title.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) 
     { 
      ((CheckedTextView) v).toggle(); 
     } 
    }); 
} 

И в главном файле XML я установить ListView в android:choiceMode="multipleChoice".

Так что я хочу, чтобы строки ListView были длинными и короткими кликами, а CheckedTextView - отдельным исполнением кликов. Это работает, за исключением текстовой части CheckedTextView. Всякий раз, когда нажата кнопка CheckedTextView, текст «мерцает». Я сделал это медленно, чтобы точно выяснить, что происходит. Когда вы нажимаете на CheckTextView, белый текст либо исчезает, либо переключается черным (возможно, инвертирует?), И когда вы отпускаете, текст снова появляется и галочка переключается. Эффект «мерцания» при нажатии на ListView отсутствует.

Любые идеи о том, что здесь происходит?

Благодаря

+0

У меня такая же проблема. Меня проверяет CheckedTextView. Он выбран, но через некоторое время (пару миллисекунд) он становится невыбранным. Однако, когда я прокручиваю (т.е. выбираю) с помощью колеса мыши, он сохраняет и передает выбор. Хм? спасибо – 2011-01-16 15:17:26

+0

Да, я до сих пор не нашел решение для этого. дайте мне знать, если вы это сделаете. – linsek

ответ

0

Вместо использования OnClickListener вы должны попробовать использовать OnTouchListener

ckToggle.setOnTouchListener(new View.OnTouchListener() { 
      public boolean onTouch(View v, MotionEvent event) { 
       CheckedTextView ck = ((CheckedTextView) v); 
       ck.toggle(); 
       return false; 
      } 
     }); 
Смежные вопросы