Не удается получить значение из ListView при использовании интерфейса setOnItemClickListener - PullRequest
0 голосов
/ 14 июня 2019

Я бы хотел получить название фильма из ListView, нажав на него. Данные, которые я получаю, взяты из API, обслуживаемых дооснащением. Сейчас я пытался использовать этот интерфейс

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

            String s = String.valueOf(listView.getItemAtPosition(position));
            Toast.makeText(genres_listView.this,s,Toast.LENGTH_LONG).show();
        }
    });

Но у меня есть какое-то странное значение, такое как

com.example.myfilmguide.models.itemList_model$itemList_Results@21f3fae

Как мне правильно его кодировать, чтобы получить нормальный заголовок?

@ Edit

Вот класс POJO, который вы, ребята, хотели.

public class itemList_model {
@SerializedName("total_results")
private int total_results;

@SerializedName("results")
private List<itemList_Results> results;

public List<itemList_Results> getResults() {
    return results;
}

public int getTotal_results() {
    return total_results;
}

public class itemList_Results{
    @SerializedName("name")
    String name;
    @SerializedName("title")
    String title;
    @SerializedName("vote_average")
    Double vote;
    @SerializedName("overview")
    String overview;
    @SerializedName("release_date")
    String releaseDate;
    @SerializedName("id")
    int id;

    public itemList_Results(String title, Double vote, String releaseDate, String overview) {
        this.title = title;
        this.vote = vote;
        this.releaseDate = releaseDate;
        this.overview = overview;
    }

    public String getTitle() {
        return title;
    }

    public Double getVote() {
        return vote;
    }

    public String getReleaseDate() {
        return releaseDate;
    }

    public String getOverview() {
        return overview;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }
}

Ответы [ 4 ]

1 голос
/ 14 июня 2019
com.example.myfilmguide.models.itemList_model$itemList_Results@21f3fae

Вы должны передать Модель в отношении данных Положение

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

             Toast.makeText(genres_listView.this,arrayListOBJ.get(position).getTitle(),Toast.LENGTH_LONG).show();
            }
        });
0 голосов
/ 14 июня 2019

Если у вас есть список itemList_Results, так что вы можете получить выбранный элемент, как показано ниже.

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            itemList_Results list_results = (itemList_Results) listView.getItemAtPosition(position);
            Toast.makeText(MainActivity.this, list_results.getTitle(), Toast.LENGTH_SHORT).show();
        }
    });
0 голосов
/ 14 июня 2019

Просто приведите возвращаемый объект и получите поле заголовка. Как и в вашем случае, Следующий вывод означает:

com.example.myfilmguide.models.itemList_model$itemList_Results@21f3fae

При получении элемента из списка вы получаете объект itemList_Results.

, поэтому просто используйте следующий способ,

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

            itemList_Results obj = (itemList_Results)listView.getItemAtPosition(position);
            Toast.makeText(genres_listView.this,obj.getTitle(),Toast.LENGTH_LONG).show();
        }
    });
0 голосов
/ 14 июня 2019

Просто попробуйте заменить

String s = String.valueOf(listView.getItemAtPosition(position));

с

String s = String.valueOf(listView.getItemAtPosition(position).getTitle());
//listView.getItemAtPosition(position).getMethod() if you want to get other values.

Надеюсь, это поможет.

...