使用 setOnItemClickListener 接口时无法从 ListView 接收值
Can't receive value from ListView, while using setOnItemClickListener interface
我想通过单击从 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
我应该如何正确编码才能获得正常标题?
@编辑
这是你们想要的 POJO class。
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;
}
}
com.example.myfilmguide.models.itemList_model$itemList_Results@21f3fae
您应该将 Model 数据传递给 Position
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();
}
});
只需尝试更换
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.
希望对您有所帮助。
只需转换返回的 object 并获取标题字段。就像你的情况一样,
以下输出表示:
com.example.myfilmguide.models.itemList_model$itemList_Results@21f3fae
当您单击列表中的项目时,您将获得 itemList_Results object。
所以就用下面的方式,
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();
}
});
如果你有 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();
}
});
我想通过单击从 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
我应该如何正确编码才能获得正常标题?
@编辑
这是你们想要的 POJO class。
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;
}
}
com.example.myfilmguide.models.itemList_model$itemList_Results@21f3fae
您应该将 Model 数据传递给 Position
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();
}
});
只需尝试更换
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.
希望对您有所帮助。
只需转换返回的 object 并获取标题字段。就像你的情况一样, 以下输出表示:
com.example.myfilmguide.models.itemList_model$itemList_Results@21f3fae
当您单击列表中的项目时,您将获得 itemList_Results object。
所以就用下面的方式,
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();
}
});
如果你有 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();
}
});