0

嘿伙计们,我正在尝试设置列表视图上的第一项检查,但代码不起作用。

import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class ListView1 extends ListActivity {
@Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

       String[] names = new String[] { "Android", "Windows7", "Symbian", "iPhone",
              "Android", "Windows7", "Symbian", "iPhone",
              "Android", "Windows7", "Symbian", "iPhone" };
         setListAdapter(new ArrayAdapter<String>(this,
                           android.R.layout.simple_list_item_single_choice,
                           android.R.id.text1, names));
         ListView listView = getListView();
         listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
         listView.setSelection(0);
         listView.setSelected(true);

   }}

我希望检查第一个单选按钮的活动图片 任何帮助将不胜感激 最好的问候 HP

4

4 回答 4

5
ListView listView = getListView();
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
listView.setSelection(0);
listView.setSelected(true);

用下面的:::use 替换上面的行

ListView listView = getListView();
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
listView.setItemChecked(0,true);
于 2012-04-18T16:36:39.470 回答
1

setSelection 正是这样做的——它选择列表视图滚动中的项目——即给它焦点。

http://developer.android.com/reference/android/widget/ListView.html#setSelection(int)

试试这个:

listview.setItemChecked(0,true)
于 2012-04-18T16:34:05.353 回答
0

您需要为此做自己的适配器(BaseAdapter 的扩展)。在 getView 中,您可以轻松地做到这一点:

if(position == 0)layout.findViewById("mycheckbox").setchecked(true)
于 2012-04-18T16:29:02.050 回答
0

如果你会坚持setItemChecked(int, boolean)

通过引用源代码,我发现以下内容:

 public void setItemChecked(int position, boolean value) {
       if (mChoiceMode == CHOICE_MODE_NONE) {
           return;
       }

        if (mChoiceMode == CHOICE_MODE_MULTIPLE) {
            mCheckStates.put(position, value);
       } else {
            boolean oldValue = mCheckStates.get(position, false);
            mCheckStates.clear();
            if (!oldValue) {
                mCheckStates.put(position, true);
            }
        }

        // Do not generate a data change while we are in the layout phase
        if (!mInLayout && !mBlockLayoutRequests) {
            mDataChanged = true;
            rememberSyncState();
            requestLayout();
        }
    }

这里最重要的一行是

 // Do not generate a data change while we are in the layout phase

这意味着即使检查项目后面的数据发生了变化,drawable也不会改变

介意

和平...

于 2013-09-17T14:18:03.423 回答