2

Android用のRSSリーダーをやろうとしています。webservice からデータを取得し、arraylist に入れます。次に、アクティビティクラスでそのarraylistを取得します..arraylistのサイズと等しい数のテーブル行とテキストビューを作成したい.ここで問題はありません.しかし、アプリケーションを実行すると、すべてのテキストビューが同じ結果を返します(arraylistの最後の項目) .すべての arraylist 項目が異なります。その結果を期待しています

ニュース[1]
ニュース[2]
ニュース[3] ....

しかし、私は得る

ニュース[20]
ニュース[20]
ニュース[20]

私はそれを理解していないことの何が悪いのですか。forループからテキストビューと行インスタンスを作成しようとしましたが、「.IllegalStateException:指定された子にはすでに親があります」という例外が発生します。私はニュースポジョを持っています。これが私のコードです。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.guncel);
    WebService ws = new WebService();
    TableLayout tb = (TableLayout) findViewById(R.id.tbl1);

    news news1 = null;
    List<news> newslist;
    URL serviceURL;
    try {
        serviceURL = new URL(
                "http://rss.hurriyet.com.tr/rss.aspx?sectionId=1");
        newslist = ws.getList(serviceURL);
        for (news new1 : newslist) {
            TableRow row = new TableRow(this);
            TextView txtview = new TextView(this);
            row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                    LayoutParams.WRAP_CONTENT));
            news1 = (news) newslist.get(i);
            txtview.setText(new1.getTitle());
            System.out.println(new1.getTitle());
            row.addView(txtview);
            tb.addView(row);
        }
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }

}

わかりました、私のせいです..リストを注意深くチェックしませんでした。オブジェクトを表すリスト内のすべてのアイテムは同じです。悪い質問で申し訳ありません。

4

1 に答える 1

1

foreachループを使用している場合は、次のように使用します。

 foreach (news new1 : newslist) {
        TableRow row = new TableRow(this);
        row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));
        txtview.setText(new1.getTitle());
        System.out.println(new1.getTitle());
        row.addView(txtview);
        tb.addView(row);
    }

forループの使用:

for (int i = 0; i < newslist.size(); i++) {
     TableRow row = new TableRow(this);
            row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                    LayoutParams.WRAP_CONTENT));
            news1 = (news) newslist.get(i);
            txtview.setText(new1.getTitle());
            System.out.println(new1.getTitle());
            row.addView(txtview);
            tb.addView(row);
}
于 2012-06-02T03:48:50.737 に答える