我正在使用Listview,我得到一个Json响应,我使用Gson解析,响应包含标题,正文和图像。对于我的列表视图,我需要显示我正在执行以下操作的标题:
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);
我正在定义我的文章类:
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();
}
}
我的列表显示标题,正文和图像全部混合在一起,我尝试过变通方法,但我似乎并不真正理解下一步是什么,以解决这个问题只显示列表视图中的标题。
非常感谢任何建议/解决方案。
答案 0 :(得分:2)
适配器ArrayAdapter<Articles> adapter
使用Articles
的toString将行显示在列表中。正如您在toString()
类Articles
中使用了所有三个属性一样,正如您所说,这显示了所有三个属性。
您只需title
使用toString()
,然后它只会将标题显示为列表行。
将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;
}
答案 1 :(得分:1)
@Pankaj Kumar所说的是对的。如果您不想弄乱Articles
课程的结构,您可以将标题存储到新的String[]
中并使用它来初始化ArrayAdapter
也就是说,在填充了包含所有lst
的{{1}}之后:
Articles
然后使用String[] titles = new String[lst.size()];
int i = 0;
for(Articles article: lst) {
titles[i] = article.getTitle();
i++;
}
初始化您的ArrayAdapter
,
titles