0

Android アプリケーションで単純なリストを取得し、いくつかの文字列で埋めようとしています。このために、次の主なアクティビティを実装しました。

public class MainMenuActivity extends BaseActivity{

private ArrayList<String> teamList = new ArrayList<String>();
private ArrayAdapter<String> teamListAdapter;
private ListView teamListView;

protected void loadGUI() {
    setContentView(R.layout.main_login);
    teamListView = (ListView) findViewById(R.id.teamList);
    teamListAdapter = new ArrayAdapter<String>(mContext, R.id.teamList, teamList);
    teamListView.setAdapter(teamListAdapter);
    addItem("test");
}

public void addItem(String item) {
    teamList.add(item);
    teamListAdapter.notifyDataSetChanged();
}

}

BaseActivity を使用して onCreate メソッドなどを実装するクラス:

public abstract class BaseActivity extends Activity {

protected Activity mActivity;
protected Context mContext;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mActivity = this;
    mContext = getApplicationContext();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu, menu);
    return true;
}

@Override
public void onResume() {
    super.onResume();
    loadGUI();
}

protected abstract void loadGUI();
}

これを実行しようとすると、次のエラーが表示されます。

05-09 16:50:04.386: E/AndroidRuntime(12037): android.content.res.Resources$NotFoundException: Resource ID #0x7f070002 type #0x12 is not valid

このエラーは addItem 関数の呼び出しによって発生しますが、この関数の何が問題なのかはわかりません。誰が何が間違っているのか分かりますか?

4

2 に答える 2

1

間違ったタイプのリソースを ArrayAdaper のコンストラクターに渡しています。パラメーター 2 は、ビューをインスタンス化するときに使用する TextView を含むレイアウト ファイルのリソース ID である必要があります。

于 2013-05-09T15:04:33.417 に答える
1

アダプターで間違った ID を使用しています。これを変更してみてください:

teamListAdapter = new ArrayAdapter<String>(mContext, R.id.teamList, teamList);

これに:

teamListAdapter = new ArrayAdapter<String>(mContext, android.R.layout.simple_list_item_1, teamList);
于 2013-05-09T15:07:38.570 に答える