5

ListViewを含むカスタムがありますButton。このボタンの機能は削除ボタンです。ユーザーがこのボタンをクリックすると、現在の行が削除されます。

  • どうすればいいですか?
  • onClickListenerこのボタンの設定方法を教えてください。
  • このボタンがオンになっている行IDを取得するにはどうすればよいですか?

前もって感謝します。

4

7 に答える 7

7

カスタム アダプタークラスのgetView()

buttonDelete.setOnClickListener(new OnClickListener()
{
  @Override
  public void onClick(View v)
   {
     //  Use position parameter of your getView() in this method it will current position of Clicked row button
    // code for current Row deleted...              
   }
});
于 2012-07-21T10:48:20.550 に答える
4

まず、このアイテムのクリックを処理するのは非常に簡単です。でリスナーを追加するだけですmyButton.setOnClickListener(mBuyButtonClickListener)。このアクションは、通常getView(...)ListView.

リスナーは、 を使用してボタンのアイテムの位置を知ることができますmyListView.getPositionForView(myButton)。リスナーのこのサンプルを見てください:

private OnClickListener mBuyButtonClickListener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        final int position = getListView().getPositionForView(v);
        if (position != ListView.INVALID_POSITION) {
            //DO THE STUFF YOU WANT TO DO WITH THE position
        }
    }
};

これが完了すると、アイテム自体のクリックやその他のタッチ イベントの伝播を処理する際に問題が発生するはずです。

したがって、内の複数のタッチ可能領域の使用について詳しく説明しているこの記事ListViewを読む必要があります。とても役に立ちます。

于 2012-07-22T00:14:52.380 に答える
1

私はいたるところを見ましたが、回答が得られるまで、どの回答も役に立ちませんでした。

私がしたことは、HolderView を作成し、すべてのテキストビューと他のウィジェットを adpater の getView メソッドにラップすることでした。

このクラスを入れます:

    static class ViewHolder
{
    TextView text1;
    TextView text2;
    TextView text3;
}

また、現在は別になっているため、同じものを通常どおりデカールしました。

TextView text1;
TextView text2;
TextView text3;

getView でレイアウトを拡張した後、すべてのビューとウィジェットを宣言します。

holder = new ViewHolder(); 
holder.text1 = (TextView) vi.findViewById(R.id.textView2single);
holder.text2 = (TextView) vi.findViewById(R.id.textView3single);
holder.text3 = (TextView) vi.findViewById(R.id.textView4single);

onClick メソッド内で、次を使用しました。

View parentView = (View) v.getParent();

そして、この親ビューを使用してすべてのウィジェットを再度宣言しました:

text1 = (TextView) parentView.findViewById(R.id.textView2single);
text2 = (TextView) parentView.findViewById(R.id.textView3single);
text3 = (TextView) parentView.findViewById(R.id.textView4single);

これを行うと、onClick がリスト ビュー アイテムの親の位置を取得するように強制されるため、その親内のすべてのウィジェットを簡単に呼び出すことができ、好きなことを行うことができます。これが私が見つけた唯一の方法です。

于 2013-08-21T23:42:04.117 に答える
1

アダプタ クラスの getView メソッド内でこれを使用します。

holder.button.setOnClickListener(new OnClickListener()
{
  @Override
  public void onClick(View v)
   {

   }
});
于 2012-07-21T11:11:27.517 に答える
0

カスタム リスト ビュー アダプターを作成し、BaseAdapter を拡張して OnClickListener を実装する

public class ListAdapter extends BaseAdapter implements OnClickListener {}

getView メソッドをオーバーライドする

@Override
public View getView(int
        position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    View row = convertView;
    ViewHolder holder = null;

    if (row == null) {
        LayoutInflater inflater = (LayoutInflater) mContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        row = inflater.inflate(R.layout.list_item, parent, false);
        holder = new ViewHolder();
        holder.b1= (Button) row.findViewById(R.id.b1);
        b1.setOnClickListener(this);
    else {

        holder = (ViewHolder) row.getTag();

    }
}

onclick メソッドをオーバーライドするようになりました

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
        case R.id.b1:
            //button b1 click event 
            break;
    }
}

public class ViewHolder {
    Button b1;
}
于 2014-07-25T17:21:21.333 に答える
0

onClickListener()の でメソッドを使用するにButtonは、のMethodeのボタンにListView適用する必要があります。onClickListener()AdaptergetView

positionしかし問題は、 のパラメータから値を取得できないことですgetView

タッチしたボタンの を取得するには、 でメソッドをposition呼び出す必要があります。getPositionForView()ListView

理解を深めるための例で議論しましょう。

  • ListViewあなたが名前を持っていると考えてくださいExampleListview

  • Button名前が付けられていて、その上でExampleButton使用したいonClickListener()

    Examplebutton.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
            final int position= ExampleListview..getPositionForView(v);
       /*Where 'v' is actually the 'View' object Which you are clicking.*/ 
    
    /*you can now right your code her & determine the your desired button by
      using the position parameter */
    }
    
于 2015-04-19T12:23:41.500 に答える