【发布时间】:2013-06-08 05:37:26
【问题描述】:
为了有一个多彩的 ListView,我创建了自己的 ArrayAdapter,但是当我想使用 adapter.clear() 或 adapter.add() 时,它会给我错误。这是代码和错误。
XML 文件:
<ListView
android:id="@+id/android:list"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:padding="10dip"
android:layout_margin="4dip"
android:layout_weight="1">
</ListView>
适配器:
class stableArrayAdapter extends ArrayAdapter<String> {
HashMap<String, Integer> mIdMap = new HashMap<String, Integer>();
public stableArrayAdapter(Context context, int textViewResourceId, String [] objects)
{
super(context, textViewResourceId, objects);
for (int i = 0; i < objects.length; ++i) {
mIdMap.put(objects[i], i);
}
}
@Override
public long getItemId(int position) {
String item = getItem(position);
return mIdMap.get(item);
}
@Override
public boolean hasStableIds() {
return true;
}
}
Java 代码:
public class createtarget extends ListActivity
{
stableArrayAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.createtarget);
lstView = getListView();
lstView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
lstView.setTextFilterEnabled(true);
Target=new String []{""};
adapter = new stableArrayAdapter(this,android.R.layout.simple_list_item_checked, Target);
setListAdapter(adapter);
}
}
添加代码:
public void submit(View view)
{
adapter.add("Hello");
}
错误:
06-08 05:21:11.785: E/AndroidRuntime(3584): FATAL EXCEPTION: main
06-08 05:21:11.785: E/AndroidRuntime(3584): java.lang.IllegalStateException: Could not execute method of the activity
06-08 05:21:11.785: E/AndroidRuntime(3584): at android.view.View$1.onClick(View.java:3599)
06-08 05:21:11.785: E/AndroidRuntime(3584): at android.view.View.performClick(View.java:4204)
06-08 05:21:11.785: E/AndroidRuntime(3584): at android.view.View$PerformClick.run(View.java:17355)
06-08 05:21:11.785: E/AndroidRuntime(3584): at android.os.Handler.handleCallback(Handler.java:725)
06-08 05:21:11.785: E/AndroidRuntime(3584): at android.os.Handler.dispatchMessage(Handler.java:92)
06-08 05:21:11.785: E/AndroidRuntime(3584): at android.os.Looper.loop(Looper.java:137)
06-08 05:21:11.785: E/AndroidRuntime(3584): at android.app.ActivityThread.main(ActivityThread.java:5041)
06-08 05:21:11.785: E/AndroidRuntime(3584): at java.lang.reflect.Method.invokeNative(Native Method)
06-08 05:21:11.785: E/AndroidRuntime(3584): at java.lang.reflect.Method.invoke(Method.java:511)
06-08 05:21:11.785: E/AndroidRuntime(3584): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
06-08 05:21:11.785: E/AndroidRuntime(3584): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
06-08 05:21:11.785: E/AndroidRuntime(3584): at dalvik.system.NativeStart.main(Native Method)
06-08 05:21:11.785: E/AndroidRuntime(3584): Caused by: java.lang.reflect.InvocationTargetException
06-08 05:21:11.785: E/AndroidRuntime(3584): at java.lang.reflect.Method.invokeNative(Native Method)
06-08 05:21:11.785: E/AndroidRuntime(3584): at java.lang.reflect.Method.invoke(Method.java:511)
06-08 05:21:11.785: E/AndroidRuntime(3584): at android.view.View$1.onClick(View.java:3594)
06-08 05:21:11.785: E/AndroidRuntime(3584): ... 11 more
06-08 05:21:11.785: E/AndroidRuntime(3584): Caused by: java.lang.UnsupportedOperationException
06-08 05:21:11.785: E/AndroidRuntime(3584): at java.util.AbstractList.add(AbstractList.java:404)
06-08 05:21:11.785: E/AndroidRuntime(3584): at java.util.AbstractList.add(AbstractList.java:425)
06-08 05:21:11.785: E/AndroidRuntime(3584): at android.widget.ArrayAdapter.add(ArrayAdapter.java:179)
06-08 05:21:11.785: E/AndroidRuntime(3584): at net.learn2develop.UsingIntent.createtarget.submit(createtarget.java:136)
06-08 05:21:11.785: E/AndroidRuntime(3584): ... 14 more
06-08 05:21:16.206: E/Trace(3614): error opening trace file: No such file or directory (2)
【问题讨论】:
-
这就是您收到此错误的原因:(stackoverflow.com/a/5125428/833647)
-
顺便说一下你的对象数组是空的:
Target=new String []{""}; -
是的,我知道,一开始它是空的,但我可以向它添加数据
-
另外,编码时请尽量遵循 Android 约定。类名应该以大写开头并遵循 CamelCase。如果我们都这样做,即使我们可能不喜欢它或认为它是最好的,它也可以帮助其他编码人员阅读您的代码。 ;) source.android.com/source/code-style.html
标签: android android-listview android-arrayadapter