みなさんこんにちは、お役に立てれば幸いです。
ListView に入力する RSS リーダーを作成しました。アプリの起動時にユーザーがネットワークにアクセスできることを確認したいのですが、ネットワークがない場合、ユーザーには setEmptyView ビューとトーストが表示されます。
onCreate では、リスト アダプターに空のリストを設定したので、空のビューが表示されることを期待しています。次に、ネットワークの状態を照会し、ネットワークがない場合はトーストを作成します。しかし、起動時に空のビューが表示されることはなく、ネットワークがない場合はトーストも表示されません。どうしたの?
public class XMLActivity extends ListActivity {
private List<JSONObject> jobs = new ArrayList<JSONObject>();
private RssListAdapter adapter;
private ListView lv;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//SET LAYOUT WITH EMPTY LIST VIEW
setContentView(R.layout.main);
View empty = findViewById(R.id.empty);
lv = getListView(); //get view layout
lv.setEmptyView(empty); //set empty view
adapter = new RssListAdapter(this,jobs); //jobs is empty array list
setListAdapter(adapter);
//CHECK FOR NETWORK AND DISPLAY TOAST
try{
boolean network = RssReader.isOnline(this); //check network state
if (!network){
Toast toast = Toast.makeText(XMLActivity.this, "No Network Access", Toast.LENGTH_LONG);
toast.show();
}
}catch (Exception e){
Toast toast = Toast.makeText(XMLActivity.this, "No Network Access", Toast.LENGTH_LONG);
toast.show();
}
// START RSS READER HANDLER
try {
jobs = RssReader.getLatestRssFeed();
} catch (Exception e) {
}
//REFRESH ADAPTER FOR LISTVIEW
adapter.clear();
for(JSONObject job :jobs){
adapter.add(job);
}
adapter.notifyDataSetChanged();
lv.setClickable(true);
空のビューまたはトーストが表示されないのはなぜですか。この問題は onCreate ルーチンでのみ発生します。その後のトーストと空のビューは、メニュー項目の選択時に正常に表示されるため、onCreate シーケンスに固有の問題のようです。