0

私は同様の質問を見つけるためにかなりの努力をして失敗しました、それでこれが冗長な汚染であるならば私を許してください。

次のように、アクティビティに対応する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>

次に、次のように、アクティビティの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
}

}

buttonDeleteをクリックした結果、ListViewの外観と機能を変更して、各行の右側にチェックマークを表示し、それらをクリックして確認できるようにすることを除いて、すべてが正常に機能します。

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 に答える