我的ListView中方法setChoiceMode()的问题

时间:2015-02-09 19:29:25

标签: android listview baseadapter listviewitem

请注意,这真的很奇怪。

由于某种原因,方法setChoiceMode(ListView.CHOICE_MODE_SINGLE)没有结果。

我这样用:

list = (ListView) findViewById(R.id.list);
list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
list.setOnItemClickListener(OnItemClickListenerObject);
list.setAdapter(adapter);

事实是,在我把方法setChoiceMode()之后,没有任何改变,RadioButtons没有出现。 我使用自定义适配器,我没有问题吗?但我不明白为什么Radiobutton没有显示。

有什么想法吗? (如果您需要其他代码,请询问并发布。)

我的适配器代码:

public class ContactAdapter extends BaseAdapter {

private LayoutInflater inflater;
private ArrayList<Contact> contacts;
private View view;

public ContactAdapter(Context context, ArrayList<Contact> contacts) {
    this.contacts = contacts;
    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override
public int getCount() {
    return contacts.size();
}

@Override
public Object getItem(int position) {
    return contacts.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

private Contact getContact(int position) {
    return (Contact) getItem(position);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    view = convertView;
    if (view == null) {
        view = inflater.inflate(R.layout.contact_item, parent, false);
    }

    Contact c = getContact(position);
    ((TextView) view.findViewById(R.id.lv_name)).setText(c.getName() + " " + c.getSurname());
    ((ImageView) view.findViewById(R.id.lv_img)).setImageBitmap(c.getPhoto());

    return view;
}
}

下面显示了我用于ListView项目的布局。

<?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="wrap_content"
    android:orientation="horizontal"
    android:layout_margin="8dp">

<ImageView
    android:id="@+id/lv_img"
    android:layout_width="75dp"
    android:layout_height="75dp"
    android:src="@drawable/default_user"
    android:layout_weight="0"/>

<TextView
    android:id="@+id/lv_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:layout_margin="16dp"
    android:layout_gravity="center_vertical"
    android:textSize="24sp"/>

</LinearLayout>

1 个答案:

答案 0 :(得分:0)

设置选择模式不会自动显示单选按钮。它所做的只是添加切换ListView行的Checkable或激活状态的行为。它仍然由行View决定如何对此作出反应。您需要创建自己的布局以为支持激活状态或Checkable接口的行进行充气。

Android确实提供了一些您可以使用的简单预制视图。这里只有几个你可以选择:

android.R.layout.simple_list_item_activated_1.xml
android.R.layout.simple_list_item_checked.xml