Android Custom Listview - PullRequest
       5

Android Custom Listview

0 голосов
/ 02 апреля 2010

Я создал собственный вид списка, который содержит Imageview + TextView + Checkbox Теперь моя проблема заключается в том, что мне нужно установить флажок для какой строки.

Xml row.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout android:id="@+id/LinearLayout01"
    android:orientation="horizontal" android:layout_width="fill_parent"
    android:gravity="center_vertical" android:layout_height="60dip">

    <LinearLayout android:id="@+id/LinearLayout03"
        android:orientation="vertical" android:gravity="center_vertical"
        android:layout_marginLeft="10dip" android:layout_height="60dip"
        android:layout_width="260dip">

        <TextView android:id="@+id/desc" android:layout_width="fill_parent"
            android:layout_height="40dip" android:ellipsize="marquee"
            android:text="Text" android:textSize="20dip" android:textStyle="bold"
            android:gravity="center_vertical" android:textColor="@color/black" />
        <TextView android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:text="Phone number"
            android:id="@+id/phone_no" android:textColor="@color/black"></TextView>

    </LinearLayout>
    <LinearLayout android:id="@+id/LinearLayout02"
        android:layout_width="fill_parent" android:gravity="center_vertical"
        android:layout_height="60dip">

        <CheckBox android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:id="@+id/chk_number"></CheckBox>
    </LinearLayout>
</LinearLayout>

и Адаптер:

class ContactList extends ArrayAdapter{

    Activity context;
    public ContactList(Activity context) {
        super(context, R.layout.row,names);
        this.context = context;
    }

public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = context.getLayoutInflater();
    View row = inflater.inflate(R.layout.row, null);

    TextView Name = (TextView) row.findViewById(R.id.desc);
    TextView Number = (TextView) row.findViewById(R.id.phone_no);
    Name.setText(names.get(position));
    Number.setText(numbers.get(position));

    CheckBox checkboxnumberScramble = (CheckBox) row.findViewWithTag(R.id.chk_number);
    checkboxnumberScramble.setChecked(true);
    checkboxnumberScramble.setOnCheckedChangeListener(new OnCheckedChangeListener() {
        public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {

            if (isChecked) { 
                setCheckboxflag(true);
            }else{
                setCheckboxflag(false);
            }
         }
    });

    return (row);
    }
}

Я получаю исключение при создании своей активности.

Ответы [ 3 ]

0 голосов
/ 14 апреля 2011

проверил getview () и в этом проверил, если заявление написано ниже

Я подумал, что это неправильно в выражении if

     if (isChecked) //--> (isChecked) not contain the Checkbox name
     { 
        setCheckboxflag(true);
     }
     else
     {
        setCheckboxflag(false);
     }

вы использовали

 if (checkBoxName.isChecked) //--> it contain checkBoxName
 { 
    setCheckboxflag(true);
 }
 else
 {
    setCheckboxflag(false);
 }
0 голосов
/ 28 февраля 2012

Линия

CheckBox checkboxnumberScramble = (CheckBox)row.findViewWithTag(R.id.chk_number);

вызывает у вас NPE.

Вы не устанавливаете тег, но вы пытаетесь получить его.

В противном случае просто используйте

CheckBox checkboxnumberScramble = (CheckBox)row.findViewWithId(R.id.chk_number);

чтобы найти его.

Если вы хотите использовать метод findViewWithTag(), то сначала нужно установить тег с помощью checkboxnumberScramble.setTag(tag), чтобы позже вы могли получить его.

0 голосов
/ 02 апреля 2010

Вы должны использовать интерфейс OnItemClickListner, чтобы проверить, какой элемент списка выбран.

как:

class youractivity extends Activity implements OnItemClickLister

и установите для слушателя ваш просмотр списка

listview_object.setOnItemClicklistener(this);

переопределить метод OnItemClick, например:

@Override
OnItemClick(){
  //what you want to do? that is here
}

вот и все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...