如何在自定义对象的android中使用ArrayAdapter

前端之家收集整理的这篇文章主要介绍了如何在自定义对象的android中使用ArrayAdapter前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何在Listview中使用自定义对象的属性.如果我实现了一个带有Strings列表的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,但这不是我需要的,因为我只需要在列表视图中的标题显示,当他们点击提取的URL.

解决方法

ArrayAdapter显示由toString()方法返回的值,因此您需要在自定义Object类中重写此方法以返回所需的String.您还需要为URL至少拥有一个getter方法,因此您可以在点击事件中检索该方法.
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,long id) {
            NewsObject item = allNews.get(position);
            String url = item.getUrl();
            Uri uri = Uri.parse(url);
            startActivity(new Intent(Intent.ACTION_VIEW,uri));
        }
    });

请注意,我认为您的自定义类是NewsObject,因为这是适配器示例使用的.

原文链接:https://www.f2er.com/android/310665.html

猜你在找的Android相关文章