2010-08-12 12 views
20

में बटन पर ऑनक्लिक श्रोता पर पैरामीटर पास करना मैंने अभी एंड्रॉइड शुरू किया है और मैं कुछ समस्याओं में भाग रहा हूं।
मैंने एक डेटाबेस से पॉप्युलेट किया है जो ListView बनाया है।
प्रत्येक पंक्ति में सूची और डेटाबेस से आइटम को हटाने के लिए एक बटन है।एक सूचीदृश्य पंक्ति

मैं बटन पर एक ईवेंट श्रोता को हुक करने में सक्षम हूं लेकिन मैं हटाए जाने वाले मिलान डेटाबेस रिकॉर्ड को निर्धारित करने में सक्षम नहीं हूं।

मेरी कक्षा तो मैं कैसे हैंडलर के लिए डेटाबेस रिकॉर्ड आईडी पारित कर सकते हैं तो मैं इसे हटाने के लिए डेटाबेस एडाप्टर का उपयोग कर सकते हैं नीचे

public class FeedArrayAdapter extends ArrayAdapter<Feed> implements OnClickListener 
{ 
    private ARssEReaderDBAdapter dba; 
    private String TAG = "FeedArrayAdapter"; 

    public FeedArrayAdapter(Context context, int textViewResourceId, List<Feed> items)   { 
    super(context, textViewResourceId, items); 
    Log.w(TAG, "List"); 


    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     Log.w(TAG, "getView"); 
     View v = convertView; 
     if (v == null) { 
      LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v = vi.inflate(R.layout.feedlistrow, null); 
    } 
    Feed feed = getItem(position); 
    if (feed != null) { 
     TextView title = (TextView)v.findViewById(R.id.TextView01); 
     if (title != null) { 
      title.setText(feed.getTitle()); 
     } 
     Button btnDelete = (Button)v.findViewById(R.id.btnDelete); 
     btnDelete.setOnClickListener(this); //btnDeleteFeedListener 
    } 
    return v; 
} 

public void onClick(View v) { 
    Log.w(TAG, "something got clicked: "); 
} 

दिखाया गया है?

उत्तर

39

आपके पास टैग में रिकॉर्ड की आईडी की दुकान, अपने दृश्य पर setTag() बुलाना चाहिए, और में पढ़ने के लिए onclick फोन getTag()

22

ऑनक्लिक लिस्टनर लागू करने वाली आंतरिक कक्षा बनाएं और फिर कन्स्ट्रक्टर में स्थिति चर पारित करें।

private Class MyClickListener implements OnClickListener { 

    private int position; 

    public MyClickListener(int position) { 
     this.position = position; 
    } 

    public void onClick(View v) { 
     System.out.println("position " + getPosition() + " clicked."); 
    } 

    public int getPosition() { 
     return position; 
    } 

} 
+0

अपने जवाब के लिए धन्यवाद, टैग विकल्पों को लागू करने के लिए सबसे आसान लग रहा था और क्या मैं इसे करना चाहता हूं :) धन्यवाद फिर से – Richard

+1

मुझे यह जवाब पसंद है क्योंकि मेरा setTag() पहले से ही किसी और चीज़ के लिए उपयोग किया जा रहा था। –

+0

यह बहुत अच्छा काम करता था क्योंकि मुझे एक क्लिक श्रोता के लिए एक से अधिक मूल्य पारित करने की आवश्यकता थी! धन्यवाद – speedynomads

संबंधित मुद्दे