我正在使用 Listview,在其中我得到一个 Json 响应,我使用 Gson 对其进行解析,响应包含标题、正文和图像。对于我的 ListView ,我需要在标题上显示我正在执行以下操作:
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 类定义为:
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();
}
}
我的列表显示标题、正文和图像都混合在一起,我已经尝试了变通方法,但我似乎并不真正理解下一步是什么来解决这个在 ListView 中只显示标题的问题.
如有任何建议/解决方案,我们将不胜感激。
最佳答案
适配器 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;
}
关于java - 在我的例子中,只需要在我的 ListView 中显示一个对象(只有标题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27539748/