同様の問題を見たことがありますが、私のものとまったく同じものはなく、答えを理解できなかったので、あなたが私を助けてくれることを願っています. 私が言及しているスレッドは、非同期タスクなどの問題を何らかの形で解決しましたが、それが何であるかはわかりません。TextView と ListView の下にレイアウトがあるという問題があります。ListView と TextView はどちらも動的に更新されます。私のリストを更新する(そしてLogCatにログインする)私の方法によれば、追加されたエントリがあります。
12-23 18:31:03.185: D/FileHandle.readList(24083): 1 エントリを読み取る
12-23 18:31:03.185: D/MainActivity.updateList(24083): 1 つのエントリでリストを更新しています
しかし、TextView しか表示されず、リストは表示されません。レイアウトは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txt_path"
android:textSize="25sp" />
<ListView android:layout_width="match_parent"
android:layout_height="fill_parent"
android:id="@+id/list"
android:longClickable="true" >
</ListView>
<!--android:id="@android:id/list" />-->
</LinearLayout>
リストを読み取って更新するためのコードは次のとおりです。
private TextView mPathView;
private ListView mListView;
private String mPath;
private String mCurrentList;
private ArrayList<ListEntry> mList = new ArrayList<ListEntry>();
private ArrayAdapter<String> mAdapter;
private List<String> mListContent = new ArrayList<String>();
/**
* Calls readList(mCurrentList)
*/
private void readList() {
readList(mCurrentList);
}
/**
* Reads items from list into mListContent
*
* @param listName name of the list
*/
private void readList(String listName) {
if (mCurrentList.compareToIgnoreCase(listName) != 0) {
mPath += "/" + listName;
}
mCurrentList = listName;
Log.d(TAG + ".readList", "Reading List " + listName);
mList = FileHandle.readList(context, listName);
}
/**
* Updates the list shown with the content of mListContent.
*/
private void updateList() {
mListContent.clear();
for (ListEntry e : mList) {
mListContent.add(e.toString());
}
Log.d(TAG + ".updateList", "Updating List with " + mList.size() + " entries");
mAdapter.notifyDataSetChanged();
}
FileHandle の静的メソッドは機能しています。前に、レイアウトなしで、TextView なしで、単純な ListView だけでコードをテストしましたが、うまくいきました。
そして、これが私のonCreateメソッドです
/**
* (non-Javadoc)
* @see android.app.Activity#onCreate(android.os.Bundle)
*/
@Override
public void onCreate(Bundle icicle) {
Log.d(TAG + ".onCreate", "Launching Activity");
super.onCreate(icicle);
setContentView(R.layout.main_layout);
MainActivity.context = getApplicationContext();
mPathView = (TextView) findViewById(R.id.txt_path);
mPath = mCurrentList = getString(R.string.rootlist);
mListView = (ListView) findViewById(R.id.list);
ListEntry.init(getApplicationContext());
FileHandle.init(getApplicationContext());
mAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, mListContent);
mPathView.setText(mPath);
mListView.setAdapter(mAdapter);
readList();
updateList();
}
誰かが私に正しい方向へのヒントを与えることができれば、それは素晴らしいことです!