0

我在 ListView 的每一行上都放了一个按钮,现在我想获取该按钮的位置(行号),并在有人按下该按钮而不是该行时使用 TOAST 显示它。

我不知道该怎么做,我什至不能展示 Toast,这是我的代码:

        ListView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> list, View view, int position, long id) {
            Log.i(TAG, "onListItemClick: " + position);

            Toast.makeText(MainActivity.this, "" + position, Toast.LENGTH_SHORT).show();            

            }
    });

我正在学习如何为 android 开发,我不是英语母语人士,感谢您的帮助!

4

4 回答 4

1

最短路径 list.getPositionForView(view);

于 2013-08-31T19:40:16.917 回答
0

在您的 Adaper 中setOnclickListner为特定按钮编写。在这里你可以得到位置。

public View getView(final int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    // TODO Auto-generated method stub
    final InviteOddViewHolder holderodd;

    int odd_bg = R.drawable.listing_odd;
    int even_bg = R.drawable.listing_even;

    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.bookmark_list_item, null);
        holderodd = new InviteOddViewHolder();
        holderodd.button = (Button) convertView
                .findViewById(R.id.button);

        holderodd.button.setOnClickListener(new OnClickListener() {           

        @Override
       public void onClick(View v) 
        {
        Toast.makeText(this, "Posit", Toast.LENGTH_LONG).show();
         }    
       });
        convertView.setTag(holderodd);

    } else {
        holderodd = (InviteOddViewHolder) convertView.getTag();

    }
    return convertView;
}

class InviteOddViewHolder {
    public Button button;

}
于 2013-08-31T15:10:39.193 回答
0
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub

    String selection = l.getItemAtPosition(position).toString();
    Toast.makeText(this.getActivity(), selection, Toast.LENGTH_LONG).show();
}
于 2016-08-08T14:06:11.097 回答
0

供您参考,只要您的元素中存在/存在诸如按钮或图像按钮之类的可点击元素ListView,它们就会控制点击事件。而且您ListView将没有机会接受点击事件。

所以,onListItemClick(...)在这里没用。

您只需要做的是,setOnClickListener在您的适配器类上为您的按钮编写并获取您的ListView.

于 2016-08-08T16:30:57.467 回答