我试图在选中列表项时删除它们,但是,有一个问题:一旦选中一个项目,另一个项目就会被删除,但是,对于每个选中或未选中的项目,toast 消息都会正确显示。但我找不到设置删除线功能位置的方法。将不胜感激任何帮助:)
OnItemClickListener itemClickListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
ListView lv = (ListView) a;
if (lv.isItemChecked(position)) {
Toast.makeText(getBaseContext(), "You checked " + values.get(position), Toast.LENGTH_SHORT).show();
TextView row = (TextView) findViewById(android.R.id.text1);
row.setPaintFlags(row.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
}
else {
Toast.makeText(getBaseContext(), "You unchecked " + values.get(position), Toast.LENGTH_SHORT).show();
TextView row = (TextView) findViewById(android.R.id.text1);
row.setPaintFlags(row.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG);
}
}
};
如果使用 TextView row = (TextView)lv.getItemAtPosition(position),则应用程序崩溃 - logcat:
1-08 16:39:30.373:E/AndroidRuntime(1934):未捕获的处理程序:线程主因未捕获的异常而退出 01-08 16:39:30.383:E/AndroidRuntime(1934):java.lang.ClassCastException:java。 lang.String 01-08 16:39:30.383: E/AndroidRuntime(1934): at com.jms.purchaseexamples.MainActivity$1.onItemClick(MainActivity.java:72) 01-08 16:39:30.383: E/AndroidRuntime( 1934): 在 android.widget.AdapterView.performItemClick(AdapterView.java:284) 01-08 16:39:30.383: E/AndroidRuntime(1934): 在 android.widget.ListView.performItemClick(ListView.java:3285) 01 -08 16:39:30.383: E/AndroidRuntime(1934): 在 android.widget.AbsListView$PerformClick.run(AbsListView.java:1640) 01-08 16:39:30.383: E/AndroidRuntime(1934): 在 android .os.Handler.handleCallback(Handler.java:587) 01-08 16:39:30.383: E/AndroidRuntime(1934): 在 android.os.Handler。dispatchMessage(Handler.java:92) 01-08 16:39:30.383: E/AndroidRuntime(1934): 在 android.os.Looper.loop(Looper.java:123) 01-08 16:39:30.383: E/ AndroidRuntime(1934): 在 android.app.ActivityThread.main(ActivityThread.java:4363) 01-08 16:39:30.383: E/AndroidRuntime(1934): 在 java.lang.reflect.Method.invokeNative(Native Method) 01-08 16:39:30.383: E/AndroidRuntime(1934): 在 java.lang.reflect.Method.invoke(Method.java:521) 01-08 16:39:30.383: E/AndroidRuntime(1934): 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 01-08 16:39:30.383: E/AndroidRuntime(1934): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:618) 01-08 16:39:30.383: E/AndroidRuntime(1934): 在 dalvik.system.NativeStart.main(Native Method)Looper.loop(Looper.java:123) 01-08 16:39:30.383: E/AndroidRuntime(1934): 在 android.app.ActivityThread.main(ActivityThread.java:4363) 01-08 16:39:30.383: E/AndroidRuntime(1934): at java.lang.reflect.Method.invokeNative(Native Method) 01-08 16:39:30.383: E/AndroidRuntime(1934): at java.lang.reflect.Method.invoke(Method. java:521) 01-08 16:39:30.383: E/AndroidRuntime(1934): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 01-08 16:39:30.383: E/AndroidRuntime(1934): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 01-08 16:39:30.383: E/AndroidRuntime(1934): 在 dalvik.system.NativeStart.main (本机方法)Looper.loop(Looper.java:123) 01-08 16:39:30.383: E/AndroidRuntime(1934): 在 android.app.ActivityThread.main(ActivityThread.java:4363) 01-08 16:39:30.383: E/AndroidRuntime(1934): at java.lang.reflect.Method.invokeNative(Native Method) 01-08 16:39:30.383: E/AndroidRuntime(1934): at java.lang.reflect.Method.invoke(Method. java:521) 01-08 16:39:30.383: E/AndroidRuntime(1934): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 01-08 16:39:30.383: E/AndroidRuntime(1934): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 01-08 16:39:30.383: E/AndroidRuntime(1934): 在 dalvik.system.NativeStart.main (本机方法)在 java.lang.reflect.Method.invokeNative(Native Method) 01-08 16:39:30.383: E/AndroidRuntime(1934): 在 java.lang.reflect.Method.invoke(Method.java:521) 01-08 16:39:30.383: E/AndroidRuntime(1934): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 01-08 16:39:30.383: E/AndroidRuntime(1934):在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 01-08 16:39:30.383: E/AndroidRuntime(1934): 在 dalvik.system.NativeStart.main(Native Method)在 java.lang.reflect.Method.invokeNative(Native Method) 01-08 16:39:30.383: E/AndroidRuntime(1934): 在 java.lang.reflect.Method.invoke(Method.java:521) 01-08 16:39:30.383: E/AndroidRuntime(1934): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 01-08 16:39:30.383: E/AndroidRuntime(1934):在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 01-08 16:39:30.383: E/AndroidRuntime(1934): 在 dalvik.system.NativeStart.main(Native Method)os.ZygoteInit.main(ZygoteInit.java:618) 01-08 16:39:30.383: E/AndroidRuntime(1934): at dalvik.system.NativeStart.main(Native Method)os.ZygoteInit.main(ZygoteInit.java:618) 01-08 16:39:30.383: E/AndroidRuntime(1934): at dalvik.system.NativeStart.main(Native Method)