2

レイアウトでボタンを非表示に設定しましたが、リスト項目を長押しすると表示されるように設定する必要があります..

配列アダプターを拡張するクラスを作成し、このクラスでボタンを宣言しています..リスト項目を長押しして表示するようにコードでこのボタンにアクセスする必要があります..このボタンにアクセスするにはどうすればよいですかでsetOnItemLongClickListener..

また、arrayadapter でボタンを宣言すると、アプリが強制終了します。

ここに私のコードがあります..

lv.setOnItemLongClickListener(new OnItemLongClickListener() {

    @Override
    public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)         {
 //arg1.findViewById(R.id.btndelete).setVisibility(View.VISIBLE);

    Toast.makeText(getApplicationContext(), "long press", Toast.LENGTH_LONG).show();
    return false;
    }
});


 class myAdapter extends ArrayAdapter<String>
    {
           Button btndlt;
           View row;
           public myAdapter(Context context,ArrayList<String> objects)
           {
                super(context, android.R.layout.simple_list_item_1, objects);          
           }

            public View getView(final int position, View convertView, ViewGroup parent)
            {
                LayoutInflater inflater=getLayoutInflater();
                row = inflater.inflate(R.layout.list_item, parent, false);

                btndlt = (Button) row.findViewById(R.id.btndelete);
            }
}    
4

1 に答える 1

1

ListItem 行にボタンがある場合は、 と を使用setTag()getTag()て Button のインスタンスを取得できますonItemLongClick()

プセドコード、

内部getView()

convertView.setTag(R.id.button, button);

中身onItemLongClick()

Button button = (Button)view.getTag(R.id.button);

また、ListItem でスワイプを検出したい場合は、hereListItem が右から左にスワイプされたときに削除ボタンを有効にするデモの例を確認できます。

于 2012-08-27T06:55:00.147 に答える