कस्टम ऑब्जेक्ट्स के Android में एक ArrayAdapter का उपयोग कैसे करें




android-arrayadapter (3)

मैं किसी सूची ऑब्जेक्ट में कस्टम ऑब्जेक्ट के गुणों का उपयोग कैसे कर सकता हूं। यदि मैं ArrayAdapter को स्ट्रिंग्स की सूची के साथ कार्यान्वित करता हूं तो यह Listview में ठीक प्रदर्शित होता है, लेकिन जब मैं कस्टम ऑब्जेक्ट्स की सूची का उपयोग करता हूं, तो यह सिर्फ मेमोरी एड्रेस को आउटपुट करता है।

अब मेरे पास जो कोड है:

ArrayList<CustomObject> allObjects = new ArrayList<>();

allObjects.add("title", "http://url.com"));


  ArrayAdapter<NewsObject> adapter = new ArrayAdapter<NewsObject>(this,
                android.R.layout.simple_list_item_1, android.R.id.text1, allNews);


        // Assign adapter to ListView
        listView.setAdapter(adapter);


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

                Uri uri = Uri.parse( "http://www.google.com" );
                startActivity(new Intent(Intent.ACTION_VIEW, uri));
            }
        });

यहाँ भी एक ऐसा ही सवाल here लेकिन यह नहीं है कि मैं क्या जरूरत है क्योंकि मैं सूची दृश्य में शीर्षक शो की जरूरत है और जब वे यूआरएल निकालने पर क्लिक करें।


आपको अपने दृश्य में एक स्थिति में अलग-अलग ऑब्जेक्ट प्रदर्शित करने के लिए अपने एडेप्टर के getView को ओवरराइड करने की आवश्यकता है।


एक ArrayAdapter स्टॉस्ट्रिंग toString() विधि द्वारा लौटाए गए मान को प्रदर्शित करता है, इसलिए आपको वांछित स्ट्रिंग को वापस करने के लिए अपने कस्टम ऑब्जेक्ट क्लास में इस विधि को ओवरराइड करना होगा। आपको URL के लिए कम से कम एक गेटर विधि की भी आवश्यकता होगी, ताकि आप क्लिक इवेंट में उसे पुनः प्राप्त कर सकें।

public class NewsObject {
    private String title;
    private String url;

    public NewsObject(String title, String url) {
        this.title = title;
        this.url = url;
    }

    public String getUrl() {
        return url;
    }

    @Override
    public String toString() {
        return title;
    }
    ...
}

onItemClick() विधि में, position आपके कस्टम ऑब्जेक्ट्स के ArrayList में सूचीबद्ध सूची आइटम के अनुरूप होगी। URL को पुनः प्राप्त करें, इसे पार्स करें, और startActivity() कॉल करें।

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            NewsObject item = allNews.get(position);
            String url = item.getUrl();
            Uri uri = Uri.parse(url);
            startActivity(new Intent(Intent.ACTION_VIEW, uri));
        }
    });

कृपया ध्यान दें, मैंने मान लिया कि आपका कस्टम वर्ग NewsObject , जैसा कि आपके एडेप्टर उदाहरण के साथ प्रयोग किया जाता है।


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

                CustomObject obj = allObjects.get(position);
                //Now use obj to access the property
                Uri uri = Uri.parse( "http://www.google.com" );
                startActivity(new Intent(Intent.ACTION_VIEW, uri));
            }
        });




android-arrayadapter