【Android】取得データを加工する①

httpsで取得したデータを加工する必要があった。
取得するデータはXMLデータにて、受け取ってそれを
Android側に表示させるだけのもの。
まあ、簡単だなと思って、
下記のサイトを参考にやってみる。
http://itpro.nikkeibp.co.jp/article/COLUMN/20100105/342883/?ST=android-dev&P=3

まず、サイトどおりに
main.xml
item_row.xml
XMLファイルを作りその後、
Item.java
RssListAdapter.java
RSSReaderActivity.java
を作った。
しかし、どうもうまくいかない。
これは、2点ほど勘違いしていたためだった。



XMLの関係について
main.xmlの詳細をitem_row.xmlに記述してあり、
item_row.xmlを引数としたadapterを生成する必要が
あった。
なぜか勘違いして引数を違う物を指定していた。(汗


サイト内で書いてあるsetListAdapterでは動かなかった。
結果、
setListAdapter(mAdapter);
の代わりに
ListView listView = (ListView)findViewById(R.id.titlelist);
listView.setAdapter(mAdapter);
にて、代行した。

とりあえず、これでサンプルは動いた。
次は、XMLファイルを加工する。




下に修正したソースコードも書いとく

package jp.co.nikkeibp.itpro.rssreader;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;

public class RSSReaderActivity extends Activity {
private ArrayList mItems;
private RssListAdapter mAdapter;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);


// Itemオブジェクトを保持するためのリストを生成し、アダプタに追加する
mItems = new ArrayList();
mAdapter = new RssListAdapter(this, R.layout.item_row, mItems);

// アダプタをリストビューにセットする
ListView listView = (ListView)findViewById(R.id.titlelist);
listView.setAdapter(mAdapter);

// サンプル用に空のItemオブジェクトをセットする
for (int i = 0; i < 10; i++) {
mAdapter.add(new Item());
}
}
}


package jp.co.nikkeibp.itpro.rssreader;

import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class RssListAdapter extends ArrayAdapter {
private LayoutInflater mInflater;
private TextView mTitle;
private TextView mDescr;

public RssListAdapter(Context context, int textViewResourceId,
List objects) {
super(context, textViewResourceId, objects);
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// TODO Auto-generated constructor stub
}

// 1行ごとのビューを生成する
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;

if (convertView == null) {
view = mInflater.inflate(R.layout.item_row, null);
}

// 現在参照しているリストの位置からItemを取得する
Item item = this.getItem(position);
if (item != null) {
// Itemから必要なデータを取り出し、それぞれTextViewにセットする
String title = item.getTitle().toString();
mTitle = (TextView) view.findViewById(R.id.item_title);
mTitle.setText(title);
String descr = item.getDescription().toString();
mDescr = (TextView) view.findViewById(R.id.item_descr);
mDescr.setText(descr);
}
return view;
}

}