我目前正在开发基本的自定义ListAdapater 在我的MainActivity上,它在尝试从我的XML文件中查找ListView时显示此错误。
这是我的MainActivity.java:
public class MainActivity extends ListActivity {
ListView list;
String[] itemName = {
"Item 1",
"Item 2",
"Item 3"
};
String [] itemContent = {
"Item Content 1",
"Item Content 2",
"Item Content 3"
};
Integer[] imageId = {
R.mipmap.pic1,
R.mipmap.pic2,
R.mipmap.pic3,
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CustomListAdapter adapter = new CustomListAdapter(this, itemName, itemContent, imageId);
list = (ListView)findViewById(R.id.list);
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
String SelectedItem = itemName[+position];
Toast.makeText(getApplicationContext(), SelectedItem, Toast.LENGTH_SHORT).show();
}
});
}
}
这是XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@android:id/list"
android:layout_centerHorizontal="true" />
</RelativeLayout>
在此问题here之前,我确实遇到了其他错误
除了android:id
的错误之外,我的代码显示完全正常,这解决了这个特定问题,但我现在错误地使用了R.id.list
。
我还尝试了仅使用Activity的建议并在XML中删除关键字android
还修复了我的旧错误,但没有解决这个问题
我刚刚发布了原始代码。
答案 0 :(得分:1)
findViewById
ListActivity
行
list = (ListView)findViewById(R.id.list);
可以使用getListView()
获取,也可以手动执行
list = (ListView)findViewById(android.R.id.list);
基本上,您的XML使用的是android.R.id.list
,而不是R.id.list
。有区别。
如果您看到无法解决ListView
的错误,那么您缺少import
语句。
答案 1 :(得分:0)
正如@Sourav在上面的代码中指出的那样,你没有将 + 符号添加到android:id =“@ android:id / list”。将 + 符号添加到ID中意味着您正在给予 (分配)新ID到该元素但没有 + 意味着您要引用已在代码中其他位置声明的其他ID