以编程方式更改列表视图,以便可以检查

时间:2012-12-17 23:30:10

标签: android-listview

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

我在与我的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非常陌生,因此有可能我浪费了某些时间的琐事,为此我道歉。

非常感谢。

1 个答案:

答案 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);

这就是诀窍。