【问题标题】:How to strikethrough text items in listview when checked?检查时如何在列表视图中删除文本项?
【发布时间】:2012-12-21 15:40:25
【问题描述】:

我试图在选中列表项时删除它们,但是,有一个问题:一旦选中一个项目,另一个项目就会被删除,但是,对于每个选中或未选中的项目,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): 在 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): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 01-08 16:39:30.383: E/AndroidRuntime(1934): at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

    标签: android listview checkbox strikethrough


    【解决方案1】:

    我没有看到您实际在哪里选择了被点击检查的行? findViewById(android.R.id.text1) 看起来不像你想要的..

    怎么样:

    //Actually select the correct item from the listview
    TextView row = (TextView)lv.getItemAtPosition(position);
    row.setPaintFlags(row.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG);
    

    【讨论】:

    • 看起来简单又好用,但是一旦项目被检查,应用程序就会崩溃 =(
    • 你能把logcat的输出贴在顶部吗?它得到了什么错误
    • 如果它可以帮助我使用以下列表布局:simple_list_item_multiple_choice
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    相关资源
    最近更新 更多