错误:隐藏列表查看子项

时间:2014-04-04 12:11:15

标签: android expandablelistview

我有带有childItem的ListView。当我按下ListView时,当我按下它时,我有想要删除可扩展ListView项目的物品项目。我想删除我使用过的代码。

我用来隐藏列表项

的代码段
ExpandableListView  remov = (ExpandableListView) v.findViewById(R.id.lvExp);
    remov.setOnTouchListener(new OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
    // TODO Auto-generated method stub

    removimg.setOnClickListener(new OnClickListener() {

    @SuppressLint("NewApi")
    @Override
    public void onClick(View v) {

    // TODO Auto-generated method stub
    Toast.makeText(v.getContext(), "hello", Toast.LENGTH_SHORT).show();

    addcadschildadoptor.remove(1);
    addcadschildadoptor.notify();

    }
    });

    return false;
    }
    });

    return v;
    } 

我使用了Expandable list Adopter snippet

@SuppressLint("NewApi")
private void prepareListData() {

listDataHeader = new ArrayList<String>();
listDataChild = new HashMap<String, List<String>>();

listDataHeader.add("");

addcadschildadoptor = new ArrayList<String>();

if(cardNameone!="")
{
addcadschildadoptor.add(cardNameone);
}


if(cardNametwo!="")
{
addcadschildadoptor.add(cardNametwo);

}
Toast.makeText(getActivity(), cardNametwo, Toast.LENGTH_LONG).show();

listDataChild.put(listDataHeader.get(0), addcadschildadoptor);

listAdapter = new ExpandableListAdapter(getActivity(), listDataHeader,listDataChild);

expListView.setAdapter(listAdapter);


}

错误日志

 04-04 16:47:51.611: E/InputEventReceiver(13452): Exception dispatching 
    input event.
    04-04 16:47:51.626: E/MessageQueue-JNI(13452): 
    Exception in MessageQueue callback: handleReceiveCallback
    04-04 16:47:51.696:
    E/MessageQueue-JNI(13452): java.lang.NullPointerException
    04-04 16:47:51.696: 
    E/MessageQueue-JNI(13452): at com.compareCr.ListvCompare$4.onTouch(ListvCompare.java:720)
    04-04 16:47:51.696: 
    E/MessageQueue-JNI(13452): at android.view.View.dispatchTouchEvent(View.java:7374)
    04-04 16:47:51.696: 
    E/MessageQueue-JNI(13452): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2464)

    04-04 16:47:51.696: E/MessageQueue-JNI(13452): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)

    04-04 16:47:51.696: E/MessageQueue-JNI(13452): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.
    java:2470)
    04-04 16:47:51.696: E/MessageQueue-JNI(13452): 
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2169)
    04-04 16:47:51.696: E/MessageQueue-JNI(13452): 
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2470)

1 个答案:

答案 0 :(得分:1)

你使用了错误的功能。

  

public final void notify()

     

在API级别1中添加导致正在等待此对象的线程   监视器(通过调用wait()方法之一)被唤醒   起来。如果有多个线程正在等待,则选择其中一个线程   VM的自由裁量权。选定的线程不会立即运行。该   调用notify()的线程必须首先释放对象的监视器。   此外,所选线程仍然必须与其他线程竞争   试图在同一个对象上进行同步。

而不是notify(),你需要使用

addcadschildadoptor.notifyDataSetChanged();

此外,您应该使用.setOnItemClickListener(),而不是在视图上使用.setOnClickListener()。您有关项目在列表中的位置的额外信息。查看reference了解更多信息