Поэтому я пытаюсь передать redditposts в ArrayList и отобразить их, я преобразовал строку JSON и получил класс redditpost. Но когда я добавляю их в ArrayList, я получаю только ссылку на объект.

    static ArrayList<RedditPost> Posts_Array_List = new ArrayList<RedditPost>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_post_list);


        final ListView lv = (ListView) findViewById(R.id.LV_Post_list);

        ArrayAdapter<RedditPost> PostsAdaptor =
                new ArrayAdapter<RedditPost>(this, android.R.layout.simple_list_item_1, Posts_Array_List);
        lv.setAdapter(PostsAdaptor);
        Bundle extras = getIntent().getExtras();
        if (extras != null) {
            String myParam = extras.getString("paramPosition");

            // Get the URL from the UI's text field.
            //String stringUrl = "https://www.reddit.com/r/" + myParam + "/hot.json?limit=2";

            // Get access to the connectivity service...
            ConnectivityManager cm =
                    (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

            // ...which we'll use to find out if we have an active network connection.
            NetworkInfo networkInfo = null;
            if (cm != null) {
                networkInfo = cm.getActiveNetworkInfo();
            }

            // If so...
            if ((networkInfo != null) && (networkInfo.isConnected())) {
                // Fetch the webpage using an instance of our DownloadWebpageTask class
               // new DownloadAsyncTask().execute(stringUrl);

            }
        } else // No luck?
        {
            Toast.makeText(getApplicationContext(), "No network connection available.", Toast.LENGTH_SHORT).show();
        }
        setarraylist();
    }

    public void setarraylist(){
        string json = JsonString
        ArrayList<RedditPost> posts = RedditPostHelper.getRedditPostsFromJSON(json);
        Posts_Array_List.addAll(posts);
    }

RedditPost Class

public class RedditPost {

    public String id;
    public String title;
    public String url;

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

Класс redditPost отключается от класса reddithelper и преобразует строку сына в строку

Я очень плохо знаком с Java и Android, поэтому, если я не понимаю ваш ответ, пожалуйста, будьте терпеливы со мной

Ожидаемый результат

Фактический результат: Фактический результат

0
Bats 15 Апр 2020 в 16:01

2 ответа

Лучший ответ

ArrayAdapter ожидает, что вызов toString() для элемента списка вернет отображаемый заголовок. Поэтому либо переопределите toString() в классе вашего элемента, либо передайте List<String>.

Переопределение toString():

public class RedditPost {

    public String id;
    public String title;
    public String url;

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

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

Преобразуйте список в List<String>:

public void setarraylist(){
    string json = JsonString
    ArrayList<RedditPost> posts = RedditPostHelper.getRedditPostsFromJSON(json);
    Posts_Array_List.clear();
    for (RedditPost post : posts) {
         Posts_Array_List.add(post.title);
    }
}

И, конечно, измените тип Posts_Array_List на ArrayList<String>, а адаптер на ArrayAdapter<String>

0
JensV 15 Апр 2020 в 13:13

Просто обновите ваш класс следующим.

public class RedditPost {

    public String id;
    public String title;
    public String url;

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



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


}
0
Parth 15 Апр 2020 в 13:13