所以我有一个listview,我希望当我单击一个按钮时,它会从listview中删除所选项目。我的listview在xml文件中定义如下,这就是使它可选的原因:
<ListView
android:id="@+id/listView1"
android:layout_width="200dp"
android:layout_height="100dp"
android:layout_alignLeft="@+id/button2"
android:layout_below="@+id/textView2"
android:choiceMode="singleChoice"
android:background="@drawable/bg_key" > >
</ListView>
到目前为止,我有这个没有错误的java代码,但是当我启动它时我的应用程序崩溃了:
public class MainActivity extends ListActivity {
Button button1;
Button button3;
Button button2;
Button button4;
ListView listView1;
ListView listView2;
Spinner s1;
String text;
Integer i;
SparseBooleanArray checkedItemPositions ;
ArrayAdapter<String> adapter;
ArrayAdapter<String> adapter2;
int itemPos;
ArrayList<String> list = new ArrayList<String>();
ArrayList<String> list2 = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = (Button) findViewById(R.id.button1);
button3 = (Button) findViewById(R.id.button3);
button4 = (Button) findViewById(R.id.button4);
button2 = (Button) findViewById(R.id.button2);
s1 = (Spinner) findViewById(R.id.spinner1);
listView1 = (ListView) findViewById(R.id.listView1);
listView2 = (ListView) findViewById(R.id.listView2);
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_single_choice, list);
listView1.setAdapter(adapter);
button2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String text = s1.getSelectedItem().toString();
list.add(text);
adapter.notifyDataSetChanged();
}});
adapter2 = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_single_choice, list2);
listView2.setAdapter(adapter2);
button1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String text = s1.getSelectedItem().toString();
list2.add(text);
adapter2.notifyDataSetChanged();
}});
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/** Getting the checked items from the listview */
SparseBooleanArray checkedItemPositions = getListView().getCheckedItemPositions();
for(int i=itemPos-1; i >= 0; i--){
if(checkedItemPositions.get(i)){
adapter.remove(list.get(i));
}
}
checkedItemPositions.clear();
adapter.notifyDataSetChanged();
}
});
listView1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
view.setSelected(true);
itemPos = position;
}});
listView2.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
view.setSelected(true);
itemPos = position;
}
});}}
logcat的
11-03 13:58:28.496: E/Trace(624): error opening trace file: No such file or directory (2)
11-03 13:58:28.776: D/dalvikvm(624): GC_FOR_ALLOC freed 125K, 3% free 6156K/6343K, paused 41ms, total 43ms
11-03 13:58:28.866: D/dalvikvm(624): GC_FOR_ALLOC freed 1K, 4% free 6498K/6727K, paused 23ms, total 23ms
11-03 13:58:28.926: D/dalvikvm(624): GC_FOR_ALLOC freed 343K, 9% free 6309K/6919K, paused 48ms, total 48ms
11-03 13:58:28.936: I/dalvikvm-heap(624): Grow heap (frag case) to 7.085MB for 921616-byte allocation
11-03 13:58:29.006: D/dalvikvm(624): GC_CONCURRENT freed <1K, 9% free 7209K/7879K, paused 32ms+3ms, total 69ms
11-03 13:58:29.156: D/dalvikvm(624): GC_FOR_ALLOC freed 0K, 9% free 7209K/7879K, paused 28ms, total 28ms
11-03 13:58:29.166: I/dalvikvm-heap(624): Grow heap (frag case) to 7.476MB for 409936-byte allocation
11-03 13:58:29.216: D/dalvikvm(624): GC_CONCURRENT freed 0K, 9% free 7609K/8327K, paused 25ms+4ms, total 50ms
11-03 13:58:29.216: D/dalvikvm(624): WAIT_FOR_CONCURRENT_GC blocked 25ms
11-03 13:58:29.416: D/gralloc_goldfish(624): Emulator without GPU emulation detected.
11-03 14:00:42.286: I/Choreographer(624): Skipped 162 frames! The application may be doing too much work on its main thread.
11-03 14:00:42.656: I/Choreographer(624): Skipped 44 frames! The application may be doing too much work on its main thread.
11-03 14:03:55.266: E/Trace(672): error opening trace file: No such file or directory (2)
11-03 14:03:56.456: D/dalvikvm(672): GC_FOR_ALLOC freed 128K, 3% free 6156K/6343K, paused 35ms, total 36ms
11-03 14:03:56.546: D/dalvikvm(672): GC_FOR_ALLOC freed 1K, 4% free 6498K/6727K, paused 24ms, total 24ms
11-03 14:03:56.576: D/dalvikvm(672): GC_FOR_ALLOC freed 343K, 9% free 6309K/6919K, paused 24ms, total 24ms
11-03 14:03:56.586: I/dalvikvm-heap(672): Grow heap (frag case) to 7.085MB for 921616-byte allocation
11-03 14:03:56.656: D/dalvikvm(672): GC_CONCURRENT freed <1K, 9% free 7209K/7879K, paused 22ms+14ms, total 65ms
11-03 14:03:56.776: D/dalvikvm(672): GC_FOR_ALLOC freed 0K, 9% free 7209K/7879K, paused 22ms, total 22ms
11-03 14:03:56.776: I/dalvikvm-heap(672): Grow heap (frag case) to 7.476MB for 409936-byte allocation
11-03 14:03:56.826: D/dalvikvm(672): GC_CONCURRENT freed 0K, 9% free 7609K/8327K, paused 15ms+4ms, total 47ms
11-03 14:03:56.826: D/dalvikvm(672): WAIT_FOR_CONCURRENT_GC blocked 15ms
11-03 14:03:57.046: D/gralloc_goldfish(672): Emulator without GPU emulation detected.
11-03 14:03:57.516: I/Choreographer(672): Skipped 42 frames! The application may be doing too much work on its main thread.
11-03 14:52:41.686: E/Trace(720): error opening trace file: No such file or directory (2)
11-03 14:52:42.576: D/dalvikvm(720): GC_FOR_ALLOC freed 75K, 3% free 6147K/6275K, paused 41ms, total 42ms
11-03 14:52:42.666: D/dalvikvm(720): GC_FOR_ALLOC freed 1K, 3% free 6490K/6663K, paused 28ms, total 28ms
11-03 14:52:42.716: D/dalvikvm(720): GC_FOR_ALLOC freed 343K, 9% free 6300K/6855K, paused 24ms, total 24ms
11-03 14:52:42.726: I/dalvikvm-heap(720): Grow heap (frag case) to 7.078MB for 921616-byte allocation
11-03 14:52:42.806: D/dalvikvm(720): GC_CONCURRENT freed <1K, 8% free 7200K/7815K, paused 23ms+24ms, total 78ms
11-03 14:52:42.926: D/dalvikvm(720): GC_FOR_ALLOC freed 0K, 8% free 7200K/7815K, paused 22ms, total 22ms
11-03 14:52:42.926: I/dalvikvm-heap(720): Grow heap (frag case) to 7.468MB for 409936-byte allocation
11-03 14:52:42.976: D/dalvikvm(720): GC_CONCURRENT freed 0K, 9% free 7601K/8263K, paused 14ms+4ms, total 48ms
11-03 14:52:42.976: D/dalvikvm(720): WAIT_FOR_CONCURRENT_GC blocked 14ms
11-03 14:52:43.017: D/AndroidRuntime(720): Shutting down VM
11-03 14:52:43.017: W/dalvikvm(720): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
11-03 14:52:43.036: E/AndroidRuntime(720): FATAL EXCEPTION: main
11-03 14:52:43.036: E/AndroidRuntime(720): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.devoir3/com.example.devoir3.MainActivity}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
11-03 14:52:43.036: E/AndroidRuntime(720): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
11-03 14:52:43.036: E/AndroidRuntime(720): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
11-03 14:52:43.036: E/AndroidRuntime(720): at android.app.ActivityThread.access$600(ActivityThread.java:130)
11-03 14:52:43.036: E/AndroidRuntime(720): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
11-03 14:52:43.036: E/AndroidRuntime(720): at android.os.Handler.dispatchMessage(Handler.java:99)
11-03 14:52:43.036: E/AndroidRuntime(720): at android.os.Looper.loop(Looper.java:137)
11-03 14:52:43.036: E/AndroidRuntime(720): at android.app.ActivityThread.main(ActivityThread.java:4745)
11-03 14:52:43.036: E/AndroidRuntime(720): at java.lang.reflect.Method.invokeNative(Native Method)
11-03 14:52:43.036: E/AndroidRuntime(720): at java.lang.reflect.Method.invoke(Method.java:511)
11-03 14:52:43.036: E/AndroidRuntime(720): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
11-03 14:52:43.036: E/AndroidRuntime(720): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-03 14:52:43.036: E/AndroidRuntime(720): at dalvik.system.NativeStart.main(Native Method)
11-03 14:52:43.036: E/AndroidRuntime(720): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
11-03 14:52:43.036: E/AndroidRuntime(720): at android.app.ListActivity.onContentChanged(ListActivity.java:243)
11-03 14:52:43.036: E/AndroidRuntime(720): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:259)
11-03 14:52:43.036: E/AndroidRuntime(720): at android.app.Activity.setContentView(Activity.java:1867)
11-03 14:52:43.036: E/AndroidRuntime(720): at com.example.devoir3.MainActivity.onCreate(MainActivity.java:38)
11-03 14:52:43.036: E/AndroidRuntime(720): at android.app.Activity.performCreate(Activity.java:5008)
11-03 14:52:43.036: E/AndroidRuntime(720): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
11-03 14:52:43.036: E/AndroidRuntime(720): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
11-03 14:52:43.036: E/AndroidRuntime(720): ... 11 more
我不太了解如何从我的列表视图中删除项目点击
谢谢
答案 0 :(得分:1)
您的活动延长ListActivity
,如果您从Activity
延伸,则应该没有问题