android listview长按报错

jimowuxin 2013-10-24 09:44:07
各位大牛,现在自己遇到一个问题,自己做了一个获取联系人的listview的示例,但是长按的话报错,先把代码放上,

public class ListviewtestActivity extends Activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listviewtest);
final List<Map<String, Object>> listItems=get_contacts(ListviewtestActivity.this);
BaseAdapter baseAdapter=new BaseAdapter() {

@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub

Map<String, Object> map=listItems.get(position);
LinearLayout linearLayout=new LinearLayout(ListviewtestActivity.this);
linearLayout.setOrientation(0);

LinearLayout linearLayout_t=new LinearLayout(ListviewtestActivity.this);
linearLayout_t.setOrientation(1);
TextView nameTextView=new TextView(ListviewtestActivity.this);
nameTextView.setTextSize(20);
nameTextView.setTextColor(Color.RED);
TextView numberTextView=new TextView(ListviewtestActivity.this);
numberTextView.setTextSize(15);
numberTextView.setTextColor(Color.BLUE);
linearLayout_t.addView(nameTextView);
linearLayout_t.addView(numberTextView);

LinearLayout linearLayout_c=new LinearLayout(ListviewtestActivity.this);
linearLayout_c.setGravity(0x05);
CheckBox selectCheckBox=new CheckBox(ListviewtestActivity.this);
selectCheckBox.setClickable(false);
selectCheckBox.setFocusable(false);
selectCheckBox.setFocusableInTouchMode(false);
linearLayout_c.addView(selectCheckBox);

linearLayout.addView(linearLayout_t);
linearLayout.addView(linearLayout_c);

nameTextView.setText(map.get("name").toString());
numberTextView.setText(map.get("number").toString());
if (map.get("selected").toString().equals("0")) {
selectCheckBox.setChecked(false);
} else {
selectCheckBox.setChecked(true);
}
Log.v("caicai", "getView_");
return linearLayout;
}

@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
Log.v("caicai", "getItemId"+position);
return position;
}

@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
Log.v("caicai", "getItem");
return listItems.get(position);
}

@Override
public int getCount() {
// TODO Auto-generated method stub
Log.v("caicai", "getCount"+listItems.size());
return listItems.size();
}
};
ListView listView=(ListView)findViewById(R.id.listview_select_contact_test);
listView.setAdapter(baseAdapter);
/*
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int pasition, long id)
{
Map<String, Object> map=listItems.get(pasition);
Log.v("caicai", map.get("name").toString());

}
});

listView.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenu.ContextMenuInfo menuInfo) {
Log.v("caicai","setOnItemLongClickListener");
menu.add(0, 0, 0, "添加");
menu.add(0, 1, 0, "删除");
menu.add(0, 2, 0, "删除ALL");
}
});*/
listView.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0,
View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
Log.v("caicai", "setOnItemLongClickListener");
return false;
}
});
}

长按错误的log,报空指针错误
FATAL EXCEPTION: main
java.lang.NullPointerException
at com.android.internal.policy.impl.PhoneWindow$DecorView$ActionModeCallbackWrapper.onCreateActionMode(PhoneWindow.java:2709)
at com.android.internal.app.ActionBarImpl$ActionModeImpl.dispatchOnCreate(ActionBarImpl.java:945)
at com.android.internal.app.ActionBarImpl.startActionMode(ActionBarImpl.java:515)
at android.app.Activity.onWindowStartingActionMode(Activity.java:4962)
at com.android.internal.policy.impl.PhoneWindow$DecorView.startActionMode(PhoneWindow.java:2414)
at com.android.internal.policy.impl.PhoneWindow$DecorView.startActionModeForChild(PhoneWindow.java:2401)
at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:654)
at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:654)
at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:654)
at android.view.View.startActionMode(View.java:4381)
at android.widget.AbsListView.performLongPress(AbsListView.java:2832)
at android.widget.AbsListView$CheckForLongPress.run(AbsListView.java:2792)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5199)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:564)
at dalvik.system.NativeStart.main(Native Method)

请各位大牛告诉小弟到底是哪里出了问题呀 自己调试了很久都不行
...全文
131 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
吴小博 2015-06-03
  • 打赏
  • 举报
回复
谢谢楼主 太感动了
jimowuxin 2013-10-24
  • 打赏
  • 举报
回复
自己回复吧,解决了,因为listview的属性设置里面选择了多选android:choiceMode="multipleChoiceModal" 但是为什么出错自己还是不清楚

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧