0

我已经做出了相当大的努力来找到一个类似的问题并且失败了,所以如果这是多余的污染,请原谅我。

我在与我的 Activity 对应的 xml 文件“my_layout”中定义了一个 ListView 和一个 ImageButton,如下所示:

<ListView
  android:id="@+id/listViewItems"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_weight="1"
  ></ListView>

<ImageButton
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:src="@drawable/btn_delete_dark"
    android:id="@+id/buttonDelete"
    android:layout_weight="1">     
</ImageButton>

然后,我在我的 Activity 的 onCreate() 方法中以编程方式填充 ListView,如下所示:

公共类 ViewItemsActivity 扩展 Activity 实现 OnClickListener、OnItemClickListener{

ImageButton buttonDelete;
ListView listViewItems;
DatabaseHandler dbHandler;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.my_layout);

    buttonDeleteQuestion = (ImageButton) findViewById(R.id.buttonDelete);
    listViewQuestions = (ListView) findViewById(R.id.listViewItems);
    buttonDelete.setOnClickListener(this);

    //get data from sql table containing items
    dbHandler = new DatabaseHandler(this);

    String [] items = dbHandler.getItems();        //get data to populate ListView


    CustomAdapter adapter = new CustomAdapter(this,
              android.R.layout.simple_list_item_1, items);
    listViewItems.setAdapter(adapter);
    listViewItems.setOnItemClickListener(this);
}

@Override
public void onClick(View v) {

        switch (v.getId()) {        
        case R.id.buttonDelete:         
        listViewItems.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        listViewItems.setItemChecked(0, true);
        break;
        //other cases are irrelevant
        }   

}


@Override
public void onItemClick(AdapterView<?> parent, View v, int pos, long id) {
    // TODO Auto-generated method stub  

    //non relevant code
}

}

一切正常,除了我希望 ListView 在外观和功能上发生变化,因为单击 buttonDelete,以便它在每行的右侧显示复选标记,可以通过单击它们进行检查。

我的理解是 setChoiceMode(ListView.MULTIPLE_CHOICE) 和 setItemChecked(i,true) 会产生这种效果,但显然我错过了一些东西,因为它没有。

我对android很陌生,所以我可能在琐事上浪费了别人的时间,对此我深表歉意。

非常感谢。

4

1 回答 1

0

解决方案非常简单,如下所示:

在 buttonDelete 对应的 onClick 事件中,我简单地创建了一个布局 id 为 *simple_list_item_multiple_choice* 的新适配器,并将其分配给 ListView

CustomAdapter adapter = new CustomAdapter(this,
          android.R.layout.simple_list_item_multiple_choice, items);
listViewItems.setAdapter(adapter);

这成功了。

于 2012-12-20T17:40:47.597 回答