我已经做出了相当大的努力来找到类似的问题并且失败了,所以请原谅我,如果这是多余的污染。
我在与我的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,如下所示:
public class ViewItemsActivity extends 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之外,所有内容都可以正常工作,这样它就会在每行的右侧显示复选标记,可以通过单击它们进行检查。 / p>
我的理解是setChoiceMode(ListView.MULTIPLE_CHOICE)和setItemChecked(i,true)会产生这种效果,但很明显我错过了一些东西,因为它没有。
我对android非常陌生,因此有可能我浪费了某些时间的琐事,为此我道歉。
非常感谢。
答案 0 :(得分:0)
解决方案非常简单,如下:
在对应于buttonDelete的onClick事件中,我只是创建了一个新的适配器,其布局标识为* simple_list_item_multiple_choice *并将其分配给带有行的ListView
CustomAdapter adapter = new CustomAdapter(this,
android.R.layout.simple_list_item_multiple_choice, items);
listViewItems.setAdapter(adapter);
这就是诀窍。