-1

「削除」ボタンをクリックしてリストビューから行を削除したい。私のリストビュー項目には、TextView-1、TextView-2、TextView-3、ImageButton-delete ボタンが水平に配置されています。削除ボタンをクリックすると、行がビューから削除されます。以下はアダプターコードです。

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            View view = (View) v.getParent();
            TextView tv = (TextView) view.findViewById(R.id.item_name);
            String item = tv.getText().toString();
            String tableno = mListItems.get(0).getTableNumber();

            orderDetailsDB = new OrderDetailsDBAdapter( 
                    getApplicationContext());

            orderDetailsDB.deleteItem(item,tableno);

個々のテキストビューを空白に設定してみましたが、機能しません。

holder.itemName.setText("");
holder.amount.setText("");
holder.quantity.setText("");

私はいくつかの投稿を読んで、リスト(mListItems)からアイテムを削除してから実行することを提案していますadapter.notifyDataSetChanged();。問題は、リスト ビューの作成に配列アダプターを使用していませんが、カスタム アダプターを使用しているため、アイテムを削除する位置を取得できないことです。お知らせ下さい。ありがとう。

4

3 に答える 3

2

remove() を使用して、アダプターからリスト項目を削除するだけです

ご参考までに

adapter = new MyListAdapter(this);
    lv = (ListView) findViewById(android.R.id.list);
    lv.setAdapter(adapter);
    lv.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> a, View v, int position, long id) {
        AlertDialog.Builder adb=new AlertDialog.Builder(MyActivity.this);
        adb.setTitle("Delete?");
        adb.setMessage("Are you sure you want to delete " + position);
        final int positionToRemove = position;
        adb.setNegativeButton("Cancel", null);
        adb.setPositiveButton("Ok", new AlertDialog.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                MyDataObject.remove(positionToRemove);
                adapter.notifyDataSetChanged();
            }});
        adb.show();
        }
    });
于 2013-08-22T13:41:09.980 に答える
0

削除したい位置を取得するためにできることは、それをリスナーに渡すことです。

// inside custom adapter
@Override
public View getView(int position, View convertView, ViewGroup parent) 
{
.....
deleteButton.setOnClickListener(new MyClickListener(position);
}
private class MyClickListener implements OnClickListener
{
int position = -1;
public MyClickListener(final int position)
{
     this.position = position;
}
@Override
public void onClick(View v) {
     // do your delete code here
     notifyDataSetChanged();
}
于 2013-08-22T13:52:35.573 に答える