2013-08-31 43 views
0

我在ListView的每一行上放置了一個按鈕,現在我想獲取該按鈕的位置(行的編號),並在使用TOAST時顯示它按下該按鈕,而不是該行。獲取ListView中按鈕的數量/位置

我不知道該怎麼做,我甚至不能顯示吐司,這裏是我的代碼:

 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();    

      } 
    }); 

我learnign如何爲下發展Android和我不是一個英語爲母語的人,感謝您的幫助!

+0

你可以看看[this](http://stackoverflow.com/questions/1709166/android-listview-elements-with-multiple-clickable-buttons?rq=1)thread .. –

回答

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; 

} 
1

最短的路list.getPositionForView(view);

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(); 
} 
+0

請嘗試避免將代碼轉儲爲答案,並嘗試解釋它的作用和原因。對於那些沒有相關編碼經驗的人來說,你的代碼可能並不明顯。 – Frits

+0

在發佈之前確認您的答案,無論它是否有效。請不要浪費開發人員的時間,除非代碼嘗試。 –

+0

它工作正常。我不會在這裏浪費任何人的時間。 – Mohammed

0

爲了您的信息,每當有/像按鈕或存在於你的ListView元素ImageButtons點擊元素,他們採取的click事件的控制。而你的ListView將不會有機會接受點擊事件。

因此,onListItemClick(...)這裏沒用。

您只需要在適配器類中爲您的按鈕編寫setOnClickListener並獲取您的ListView的選定位置。