0

アイテムを選択してボタンを押すと削除されるリストビューがあります。何も起こっていないため、アイテムがまったく選択されているかどうかはわかりません。

currentDraft = new Draft();
inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
playerListView = (ListView)this.findViewById(android.R.id.content).getRootView().findViewById(R.id.player_list); 
playerListAdapter = new ArrayAdapter(this,R.layout.player_item,R.id.player_name_txt, new ArrayList<String>(){});

playerListView.setAdapter(playerListAdapter);
playerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,long arg3) {
            view.setSelected(true);
            playerListView.setSelection(position);
            Log.i("DraftBuddy", "Selected: " + position);
        }
    });

ボタンのコード

public void removePlayer(View v)
{
        if(playerListView.getSelectedItem() != null)
        {
            int removeTarget = playerListView.getSelectedItemPosition();
            playerListAdapter.remove(playerListAdapter.getItem(removeTarget));
            playerListAdapter.notifyDataSetChanged();
        }
}

ビューのコード:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.mtgdraftbuddy.bryantyoung.draftbuddy2.DraftStart"
    android:clickable="true"
    android:contextClickable="true"
    android:background="#0a0909">

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/player_list"
        tools:listitem="@android:layout/simple_list_item_1"
        android:layout_alignParentTop="true"
        android:layout_above="@+id/add_player_btn"
        android:layout_alignRight="@+id/Startbtn"
        android:layout_alignEnd="@+id/Startbtn"
        android:clickable="true"
        android:contextClickable="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Add Player"
        android:id="@+id/add_player_btn"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:clickable="true"
        android:onClick="addPlayer" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Start Draft"
        android:id="@+id/Startbtn"
        android:layout_alignTop="@+id/add_player_btn"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Delete"
        android:id="@+id/removeBtn"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:onClick="removePlayer" />

</RelativeLayout>

ログステートメントはlogcatに出力されていません。つまり、ユーザーがリストビューをクリックしたときに認識されません。これは、人々がリンクしている他のソリューションとは異なります。問題を投稿する前に、解決策も試しました。

4

2 に答える 2

0
listView.getItemAtPosition(position)

Listこれは、 に提供されるのオブジェクトを返しますAdapter

Adapterクラスには、提供されremove()たからへのメソッドがありますelementlist

adapter.remove("here provide the object which you want to remove")

このようなもの

 private int TRACK = 0; // make a variable where you can track which item was clicked in the listview 

listviewどのアイテムがクリックされたかを追跡する必要があります。TRACK

playerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,long arg3) {
            TRACK = position;
            Log.i("DraftBuddy", "Selected: " + position);
        }
    });

これは、ボタンのクリックから呼び出すために使用できるコードです

public void removePlayer(View v)
{
        if(playerListView.getSelectedItem() != null)
        {

             playerListAdapter.remove(playerListView.getItemAtPosition(TRACK));
             playerListAdapter.notifyDataSetChanged();
        }
}

アップデート

クリックされたリストビューからアイテムを削除したいと思うなら。

この場合、このようにクリックされたアイテムを取得できれば、

playerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,long arg3) {
              playerListAdapter.remove(playerListView.getItemAtPosition(position));
              playerListAdapter.notifyDataSetChanged();
        }
    });
于 2016-01-27T09:17:19.527 に答える