android - ऑनक्लिक आइटम के साथ एंड्रॉइड लिस्ट व्यू




5 Answers

आपकी गतिविधि में, जहां आपने अपनी सूचीदृश्य परिभाषित किया था

तुम लिखो

listview.setOnItemClickListener(new OnItemClickListener(){   
    @Override
    public void onItemClick(AdapterView<?>adapter,View v, int position){
        ItemClicked item = adapter.getItemAtPosition(position);

        Intent intent = new Intent(Activity.this,destinationActivity.class);
        //based on item add info to intent
        startActivity(intent);
    }
});

अपने एडाप्टर के प्राप्त में आप लिखते हैं

public ItemClicked getItem(int position){
    return items.get(position);
}

मैं एंड्रॉइड में एक नया प्रोग्रामर और नया हूं। मैं इस उदाहरण का उपयोग कर रहा हूं http://www.androidhive.info/2012/09/android-adding-search-functionality-to-listview/ कार्यक्षमता- http://www.androidhive.info/2012/09/android-adding-search-functionality-to-listview/ -listview http://www.androidhive.info/2012/09/android-adding-search-functionality-to-listview/ और यह बहुत अच्छा काम करता है।

अब मैं अलग-अलग जानकारी के साथ एक नई गतिविधि खोलने के लिए एक समारोह को कॉल करने के लिए आइटम (डेल, सैमसंग गैलेक्सी एस 3, आदि) बनाना चाहता हूं।

उदाहरण के लिए:

अगर मैं डेल को छूता हूं, तो मुझे एक नई गतिविधि को डेल के बारे में जानकारी दिखाने के लिए दिखाना पड़ता है। अगर मैं सैमसंग को छूता हूं, वही बात।

मैं गुगल हो गया लेकिन कुछ भी उपयोगी नहीं मिला, कोई संकेत? मुझे लगता है कि यह मूल है, लेकिन मैं नया हूं इसलिए मुझे नहीं पता कि कहां से शुरू करना है




आपको निश्चित रूप से आपको ArrayListAdapter विस्तार करना चाहिए और इसे अपने getView() विधि में कार्यान्वित करना चाहिए। दूसरा पैरामीटर (एक View ) फुलाया जाना चाहिए यदि यह मान null , इसका लाभ उठाएं और इसे भरने के बाद इसे onClickListener() सेट करें।

इसे अपने दूसरे getView() के पैरामीटर कहा जाता है जिसे convertView कहा जाता है:

convertView.setOnClickListener(new View.OnClickListener() {
  public void onClick(final View v) {
    if (isSamsung) {
      final Intent intent = new Intent(this, SamsungInfo.class);
      startActivity(intent);
    }
    else if (...) {
      ...
    }
  }
}

यदि आप ArrayListAdapter को विस्तारित करने के बारे में कुछ जानकारी चाहते हैं, तो मैं इस link अनुशंसा करता हूं।




lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        Intent i = new Intent(getActivity(), DiscussAddValu.class);
        startActivity(i);
    }
});



किस प्रकार के नरक पार्सलबल लागू कर रहे हैं?

वह एडाप्टर स्ट्रिंग [] को पास कर रहा है

  • स्थिति पर आइटम (स्ट्रिंग) प्राप्त करें
  • इरादा बनाएँ
  • इसे अतिरिक्त के रूप में रखो
  • गतिविधि शुरू करें
  • गतिविधि में अतिरिक्त मिलता है

उत्पाद सूची को स्टोर करने के लिए आप यहां हैश मैप का उपयोग कर सकते हैं (उदाहरण के लिए स्टेटिक ऑब्जेक्ट के रूप में)

उत्पाद का वर्णन करने वाला उदाहरण वर्ग:

public class Product {
    private String _name;
    private String _description;
    private int _id

    public Product(String name, String description,int id) {
        _name = name;
        _desctription = description;
        _id = id;
    }

    public String getName() {
        return _name;
    }

    public String getDescription() {
        return _description;
    }
}

Product dell = new Product("dell","this is dell",1);

HashMap<String,Product> _hashMap = new HashMap<>();
_hashMap.put(dell.getName(),dell);

तो आप कुंजी के एडाप्टर सेट को पास करते हैं:

String[] productNames =  _hashMap.keySet().toArray(new String[_hashMap.size()]);

जब एडाप्टर में आप वापस लौटते हैं तो इस तरह श्रोता को सेट करें उदाहरण के लिए:

 @Override
 public View getView(int position, View convertView, ViewGroup parent) {

     Context context = parent.getContext(); 

     String itemName = getItem(position)

     someView.setOnClikListener(new MyOnClickListener(context, itemName));

 }


 private class MyOnClickListener implements View.OnClickListener { 

     private  String _itemName; 
     private  Context _context

     public MyOnClickListener(Context context, String itemName) {
         _context = context;
         _itemName = itemName; 
     }

     @Override 
     public void onClick(View view) {
         //------listener onClick example method body ------
         Intent intent = new Intent(_context, SomeClassToHandleData.class);
         intent.putExtra(key_to_product_name,_itemName);
         _context.startActivity(intent);
     }
 }

फिर अन्य गतिविधि में:

@Override 
public void onCreate(Bundle) {

    String productName = getIntent().getExtra(key_to_product_name);
    Product product = _hashMap.get(productName);

}

* key_to_product_name एक सार्वजनिक स्थैतिक स्ट्रिंग है जो अतिरिक्त के लिए कुंजी के रूप में कार्य करता है

ps। टाइपो के लिए खेद है मैं जल्दी में था :) ps2। यह शोर आपको एक विचार देता है कि इसे ps3 कैसे करें। जब मेरे पास अधिक समय होगा तो मैं एक विस्तृत विवरण जोड़ूंगा

मेरी टिप्पणी:

  • किसी भी स्विच स्टेटमेंट का उपयोग न करें
  • प्रत्येक उत्पाद के लिए अलग-अलग गतिविधियां न बनाएं (यू केवल एक की आवश्यकता है)



listview.setOnItemClickListener(new OnItemClickListener(){

//setting onclick to items in the listview.

@Override
public void onItemClick(AdapterView<?>adapter,View v, int position){
Intent intent;
switch(position){

// case 0 is the first item in the listView.

  case 0:
    intent = new Intent(Activity.this,firstActivity.class);
    break;
//case 1 is the second item in the listView.

  case 1:
    intent = new Intent(Activity.this,secondActivity.class);
    break;
 case 2:
    intent = new Intent(Activity.this,thirdActivity.class);
    break;
//add more if you have more items in listView
startActivity(intent);
}

});



Related