我必须创建一个列表视图,每个项目在右侧都有一个单独的图标。我写了一段代码,但它没有用?我该怎么办? 应用程序崩溃
CODE
public class LoginMenu extends ListActivity
{
TextView maintext, subtext;
QuickContactBadge icon;
private static final String[] menuitems = { "Availability", "Messages",
"Greetings", "Address Book", "Calls", "Settings" };
@Override
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.menu);
maintext = (TextView) findViewById(R.id.tvMainText);
subtext = (TextView) findViewById(R.id.tvSubText);
setListAdapter(new IconicAdapter());
}
class IconicAdapter extends ArrayAdapter<String>
{
public IconicAdapter()
{
super(LoginMenu.this, R.layout.menu, R.id.tvMainText, menuitems);
// TODO Auto-generated constructor stub
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
// TODO Auto-generated method stub
View row = super.getView(position, convertView, parent);
icon = (QuickContactBadge) findViewById(R.id.iContactBadge);
if (menuitems[0] != null)
{
icon.setImageResource(R.drawable.menu_availability);
}
else if (menuitems[1] != null)
{
icon.setImageResource(R.drawable.menu_messages);
}
else if (menuitems[2] != null)
{
icon.setImageResource(R.drawable.menu_greetings);
}
else if (menuitems[3] != null)
{
icon.setImageResource(R.drawable.menu_contacts);
}
else if (menuitems[4] != null)
{
icon.setImageResource(R.drawable.menu_calls);
}
else if (menuitems[5] != null)
{
icon.setImageResource(R.drawable.menu_settings);
}
return (row);
}
}
}
IMAGE我的XML文件包含图像,textview和根据下图排列的另一个子文本
logcat的
10-11 04:46:15.088: E/AndroidRuntime(726): FATAL EXCEPTION: main
10-11 04:46:15.088: E/AndroidRuntime(726): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.avst.callxpressmobile/com.example.avst.callxpressmobile.MenuScreen}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
10-11 04:46:15.088: E/AndroidRuntime(726): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
10-11 04:46:15.088: E/AndroidRuntime(726): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
10-11 04:46:15.088: E/AndroidRuntime(726): at android.app.ActivityThread.access$600(ActivityThread.java:130)
10-11 04:46:15.088: E/AndroidRuntime(726): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
10-11 04:46:15.088: E/AndroidRuntime(726): at android.os.Handler.dispatchMessage(Handler.java:99)
10-11 04:46:15.088: E/AndroidRuntime(726): at android.os.Looper.loop(Looper.java:137)
10-11 04:46:15.088: E/AndroidRuntime(726): at android.app.ActivityThread.main(ActivityThread.java:4745)
10-11 04:46:15.088: E/AndroidRuntime(726): at java.lang.reflect.Method.invokeNative(Native Method)
10-11 04:46:15.088: E/AndroidRuntime(726): at java.lang.reflect.Method.invoke(Method.java:511)
10-11 04:46:15.088: E/AndroidRuntime(726): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-11 04:46:15.088: E/AndroidRuntime(726): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-11 04:46:15.088: E/AndroidRuntime(726): at dalvik.system.NativeStart.main(Native Method)
10-11 04:46:15.088: E/AndroidRuntime(726): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
10-11 04:46:15.088: E/AndroidRuntime(726): at android.app.ListActivity.onContentChanged(ListActivity.java:243)
10-11 04:46:15.088: E/AndroidRuntime(726): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:259)
10-11 04:46:15.088: E/AndroidRuntime(726): at android.app.Activity.setContentView(Activity.java:1867)
10-11 04:46:15.088: E/AndroidRuntime(726): at com.example.avst.callxpressmobile.MenuScreen.onCreate(MenuScreen.java:22)
10-11 04:46:15.088: E/AndroidRuntime(726): at android.app.Activity.performCreate(Activity.java:5008)
10-11 04:46:15.088: E/AndroidRuntime(726): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
10-11 04:46:15.088: E/AndroidRuntime(726): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
10-11 04:46:15.088: E/AndroidRuntime(726): ... 11 more
答案 0 :(得分:11)
您可以在此处获得简单的代码,该代码在列表的每一行中显示图像和一些文本:
http://www.mkyong.com/android/android-listview-example/
但是如果行数很高,并且如果要从服务器获取每行中的图像,那么最好使用它:
答案 1 :(得分:6)
只需使用包含行详细信息的HashMap<String,String>
(图片,两个文字)。请参阅此link,它将帮助您实现所需目标。
答案 2 :(得分:2)
下面的某些链接对您的相同代码非常有用....
http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/
http://wptrafficanalyzer.in/blog/listview-with-images-and-text-using-simple-adapter-in-android/
http://android-example-code.blogspot.in/p/dynamic-custoized-list-view-in-android.html
http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/
或强>
if (menuitems[0] != null) {
if(menuitems[0].equalsIgnoreCase("Availability")
{
icon.setImageResource(R.drawable.menu_availability);
// Set your another textview and another subtext here....
}
}
// Set another conditions also as per above code
由于
答案 3 :(得分:2)
引起:java.lang.RuntimeException:您的内容必须有 ListView的id属性为'android.R.id.list'
您正在使用ListActivity
并设置内容setContentView()
。 ListActivity
默认情况下为ListView
,不需要xml布局。但是,如果要提供xml布局,则布局必须具有ListView
元素,其id设置为@android:id/list
。
关于内容,您始终可以在Menu
中填充menu.xml并将其用作数据阵列。幸运的是,每个MenuItem
都有一个标题和图标。此外,Menu
还有size()
和getItem()
种方法。