Java 在我的案例中,需要在我的列表视图(仅标题)中仅显示一个对象
我正在使用一个Listview,在那里我得到一个Json响应,我使用Gson解析该响应,该响应包含标题、正文和图像。对于我的列表视图,我需要在标题上显示,我正在执行以下操作:Java 在我的案例中,需要在我的列表视图(仅标题)中仅显示一个对象,java,android,listview,object,android-arrayadapter,Java,Android,Listview,Object,Android Arrayadapter,我正在使用一个Listview,在那里我得到一个Json响应,我使用Gson解析该响应,该响应包含标题、正文和图像。对于我的列表视图,我需要在标题上显示,我正在执行以下操作: Articles[] testCase = gson.fromJson(Bundlekey, Articles[].class); @SuppressWarnings("rawtypes") ArrayList list = new ArrayList();
Articles[] testCase = gson.fromJson(Bundlekey, Articles[].class);
@SuppressWarnings("rawtypes")
ArrayList list = new ArrayList();
ArrayList<Articles> lst = new ArrayList<Articles>();
for (int i = 0; i < testCase.length; i++) {
list.add(testCase[i].getTitle());
list.add(testCase[i].getBody());
list.add(testCase[i].getImages());
lst.add(testCase[i]);
Log.e("DONE", testCase[i].getTitle().toString());
}
final ArrayAdapter<Articles> adapter = new ArrayAdapter<Articles>(
activity, android.R.layout.simple_list_item_1, lst);
activity.setListAdapter(adapter);
Articles[]testCase=gson.fromJson(Bundlekey,Articles[].class);
@抑制警告(“原始类型”)
ArrayList=新建ArrayList();
ArrayList lst=新的ArrayList();
for(int i=0;i
我将我的文章类定义为:
import java.io.Serializable;
import java.util.List;
import com.google.gson.annotations.SerializedName;
public class Articles implements Serializable{
private static final long serialVersionUID = 8359220892008313080L;
public List<Articles> results;
@SerializedName("body")
private String body;
@SerializedName("title")
private String title;
@SerializedName("images")
private List<Images> images;
/*public Articles() {
this.body = body;
this.title = title;
this.images = images;
}*/
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public List<Images> getImages() {
return images ;
}
public void setImages(List<Images> images) {
this.images = images;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("***** Articles *****\n");
sb.append("BODY=" + getBody() + "\n");
sb.append("TITLE=" + getTitle() + "\n");
sb.append("IMAGES=" + getImages() + "\n");
sb.append("*****************************");
return sb.toString();
}
}
import java.io.Serializable;
导入java.util.List;
导入com.google.gson.annotations.SerializedName;
公共类项目实现可序列化{
私有静态最终长serialVersionUID=8359220892008313080L;
公开名单结果;
@序列化名称(“正文”)
私有字符串体;
@序列化名称(“标题”)
私有字符串标题;
@序列化名称(“图像”)
私有列表图像;
/*公共物品(){
这个身体=身体;
this.title=标题;
这个。图像=图像;
}*/
公共字符串getBody(){
返回体;
}
公共体(字符串体){
这个身体=身体;
}
公共字符串getTitle(){
返回标题;
}
公共无效集合标题(字符串标题){
this.title=标题;
}
公共列表getImages(){
返回图像;
}
公共图像(列表图像){
这个。图像=图像;
}
@凌驾
公共字符串toString(){
StringBuilder sb=新的StringBuilder();
sb.附加(“*******条款******\n”);
sb.append(“BODY=“+getBody()+”\n”);
sb.追加(“TITLE=“+getTitle()+”\n”);
sb.追加(“IMAGES=“+getImages()+”\n”);
某人追加(“*******************************”);
使某人返回字符串();
}
}
我的列表显示的标题、正文和图像都混合在一起,我尝试了一些变通方法,但我似乎不太明白下一步该怎么做才能解决这个问题,即在listview中只显示标题
任何建议/解决方案都将不胜感激。适配器ArrayAdapter
正在使用文章的字符串将行显示到列表中。由于您已将所有三个属性用于Articles
类的toString()
,因此,正如您所说,这将显示所有三个属性
您只需在toString()
中使用title
,然后它将只显示标题作为列表行
将toString()
代码替换为
@Override
public String toString() {
// Return only title from this method to print title into list row.
StringBuilder sb = new StringBuilder();
sb.append("TITLE=" + getTitle() + "\n");
return sb.toString();
// OR
// return getTitle(); // Better is to return this.title;
}
@Pankaj Kumar说的是对的。如果你不想弄乱你的文章
类的结构,你可以将标题存储到一个新的字符串[]
中,并用它初始化数组适配器
也就是说,在填充包含所有文章的lst
之后:
String[] titles = new String[lst.size()];
int i = 0;
for(Articles article: lst) {
titles[i] = article.getTitle();
i++;
}
然后用标题初始化阵列适配器
,如下所示:
ArrayAdapter<Articles> adapter = new ArrayAdapter<Articles>(
activity, android.R.layout.simple_list_item_1, titles);
activity.setListAdapter(adapter);
ArrayAdapter适配器=新的ArrayAdapter(
活动,android.R.layout.simple_list_item_1,标题);
activity.setListAdapter(适配器);