java - 在我的例子中,只需要在我的 ListView 中显示一个对象(只有标题)

标签 java android listview object android-arrayadapter

我正在使用 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/

相关文章:

java - 在 Java 中,如何在 Web 应用程序中动态重新加载资源包?

Android: 执行 doInBackground , TextView 的 setText

android - 在不同线程上的 ListView 中加载图像的安全、标准方法?

c# - UpdatePanel 中 ListView 中的 LinkBut​​ton 导致完全回发

java - 使用 Java 将 PDF 转换为 Swf

java - 从基于 Java 的 Web 应用程序发送预定电子邮件的最佳方式是什么?

javascript - 在类图中包含 JavaScript 和 HTML 文件?

android - 如何像Facebook Profile一样在AppBar上隐藏ImageView?

java - Android Spinner 空指针

JavaFX:在 onEditCommit 函数中使用 ListView.edit(int itemIndex)