我的实现效果是ListView中有ImageView(头像) TextView(姓名) TextView(帐号) CheckBox(选择)
当我点第一页的时候CheckBox正常,点后面页面的时候 出空指针 ,高手们帮我看看 public class OtherActivity extends Activity {
private static final String TAG ="OtherActivity";
private ListView mListView;
private ArrayList<HashMap<String,Object>> mData;
private HashMap<String, Object> map;
List<Integer> list = new ArrayList<Integer>();
MultiAutoCompleteTextView maTextView;
// private ImageGetter imageGetter = new ImageGetter() {
//
// @Override
// public Drawable getDrawable(String source) {
// int id = Integer.parseInt(source);
// Drawable draw = getResources().getDrawable(id);
// draw.setBounds(0, 0, draw.getIntrinsicWidth(), draw.getIntrinsicHeight());
// return draw;
// }
// };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.other);
ViewStub viewStub = (ViewStub) findViewById(R.id.recipients_editor_stub);
viewStub.setVisibility(View.VISIBLE);
mListView = (ListView) findViewById(R.id.item_listView);
final MultiAutoCompleteTextView maTextView = (MultiAutoCompleteTextView) findViewById(R.id.recipients_editor);
mData = new ArrayList<HashMap<String, Object>>();
for(int i=0;i<10;i++) {
map = new HashMap<String, Object>();
map.put("name", "张三"+i);
map.put("img", R.drawable.avatar_default_large);
map.put("phone", "135"+i);
map.put("ischecked", false);
mData.add(map);
}
mListView.setAdapter(new MyAdapter(OtherActivity.this, mData,list));
mListView.setOnItemClickListener(new OnItemClickListener() { @Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
// Log.i(TAG, position+" other");
ListView pListView = (ListView) parent;
View itemView = (View) pListView.getChildAt(position);
TextView itemNametv = (TextView) itemView.findViewById(R.id.item_tv_name);
String name = itemNametv.getText().toString();
Log.i(TAG, name);
这里出空指针--> CheckBox itemCheckBox = (CheckBox) itemView.findViewById(R.id.item_checkbox);
if(list.contains(new Integer(position))) {
itemCheckBox.setChecked(false);
list.remove(new Integer(position));
// RemoveTitltIcon(name);
}else {
itemCheckBox.setChecked(true);
list.add(new Integer(position));
// AddTitleIcon(name);
}
}
当我点第一页的时候CheckBox正常,点后面页面的时候 出空指针 ,高手们帮我看看 public class OtherActivity extends Activity {
private static final String TAG ="OtherActivity";
private ListView mListView;
private ArrayList<HashMap<String,Object>> mData;
private HashMap<String, Object> map;
List<Integer> list = new ArrayList<Integer>();
MultiAutoCompleteTextView maTextView;
// private ImageGetter imageGetter = new ImageGetter() {
//
// @Override
// public Drawable getDrawable(String source) {
// int id = Integer.parseInt(source);
// Drawable draw = getResources().getDrawable(id);
// draw.setBounds(0, 0, draw.getIntrinsicWidth(), draw.getIntrinsicHeight());
// return draw;
// }
// };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.other);
ViewStub viewStub = (ViewStub) findViewById(R.id.recipients_editor_stub);
viewStub.setVisibility(View.VISIBLE);
mListView = (ListView) findViewById(R.id.item_listView);
final MultiAutoCompleteTextView maTextView = (MultiAutoCompleteTextView) findViewById(R.id.recipients_editor);
mData = new ArrayList<HashMap<String, Object>>();
for(int i=0;i<10;i++) {
map = new HashMap<String, Object>();
map.put("name", "张三"+i);
map.put("img", R.drawable.avatar_default_large);
map.put("phone", "135"+i);
map.put("ischecked", false);
mData.add(map);
}
mListView.setAdapter(new MyAdapter(OtherActivity.this, mData,list));
mListView.setOnItemClickListener(new OnItemClickListener() { @Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
// Log.i(TAG, position+" other");
ListView pListView = (ListView) parent;
View itemView = (View) pListView.getChildAt(position);
TextView itemNametv = (TextView) itemView.findViewById(R.id.item_tv_name);
String name = itemNametv.getText().toString();
Log.i(TAG, name);
这里出空指针--> CheckBox itemCheckBox = (CheckBox) itemView.findViewById(R.id.item_checkbox);
if(list.contains(new Integer(position))) {
itemCheckBox.setChecked(false);
list.remove(new Integer(position));
// RemoveTitltIcon(name);
}else {
itemCheckBox.setChecked(true);
list.add(new Integer(position));
// AddTitleIcon(name);
}
}
解决方案 »
- Android 系统属性SystemProperty分析
- Linphone的视频发送问题
- xmpp 消息问题 请高手解决
- android如何得到服务端的返回值 集合类型
- launcher 上与屏幕相关的滚动条
- 在两个Activity之间传递ArrayList对象的问题,调二天了
- java 、Android提交参数转码问题
- UBUNTU编译XBMC for android编译不过
- 对百度地图开发有经验的朋友求帮忙,昨天地图还可以显示,今天就只能显示网格了,求助
- 在进行android后台静默拍照的时候出现一个奇怪的错误,求大神解答
- gen 下如何生成两个包名,如ApiDemos里面的com.example.android.apis和com.example.android.apis.app
- 一个拖动的动画效果问题(不是Gallery)
public class MyAdapter extends BaseAdapter {
private static final String TAG ="MyAdapter";
private LayoutInflater mLayoutInflater;
private ArrayList<HashMap<String, Object>> mData;
private HashMap<String, Object> map;
private ViewHolder holder = null;
private List<Integer> mList ;
public MyAdapter(Context context,ArrayList<HashMap<String, Object>> mData,List<Integer> list) {
this.mLayoutInflater = LayoutInflater.from(context);
this.mData = mData;
this.mList = list;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mData.size();
} @Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
} @Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
} @Override
public View getView(final int position, View convertView, ViewGroup parent) {
if(convertView==null) {
holder = new ViewHolder();
convertView = mLayoutInflater.inflate(R.layout.items, null);
holder.imgIcon = (ImageView) convertView.findViewById(R.id.item_imageView);
holder.name = (TextView) convertView.findViewById(R.id.item_tv_name);
holder.phone = (TextView) convertView.findViewById(R.id.item_tv_id);
holder.mcb = (CheckBox) convertView.findViewById(R.id.item_checkbox);
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}
holder.imgIcon.setImageResource((Integer)mData.get(position).get("img"));
holder.name.setText((String)mData.get(position).get("name"));
holder.phone.setText((String)mData.get(position).get("phone"));
holder.mcb.setChecked((Boolean)mData.get(position).get("ischecked"));
if(mList!=null) {
holder.mcb.setChecked(mList.contains(new Integer(position)));
}else {
holder.mcb.setChecked(false);
}
return convertView;
}
public final class ViewHolder {
public ImageView imgIcon;
public TextView name;
public TextView phone;
public CheckBox mcb;
}
这句跳空指针错误,说明itemView未被实例化。
再看这句
View itemView = (View) pListView.getChildAt(position);
他的作用是来实例化itemView的,但是未成功,说明pListView有问题,则再看:
ListView pListView = (ListView) parent;
pListView有问题,说明parent有问题,则再看:
public void onItemClick(AdapterView<?> parent, View view,
int position, long id)parent是你自定义的,问题应该会出在那儿,代码可以贴上来,或者用一楼的先试试。
http://www.eoeandroid.com/forum-viewthread-tid-82491-fromuid-492573.htmlother.xml 我用的是ListView <?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<LinearLayout android:background="@drawable/top_bg"
android:paddingLeft="6.0dip" android:paddingTop="5.0dip"
android:paddingRight="6.0dip" android:paddingBottom="5.0dip"
android:layout_width="fill_parent" android:layout_height="wrap_content">
<ViewStub android:layout_gravity="center_vertical"
android:id="@+id/recipients_editor_stub" android:layout="@layout/recipients_editor"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_marginLeft="4.0dip" />
</LinearLayout>
<LinearLayout android:gravity="center" android:id="@+id/recip_sel_tabs"
android:background="@drawable/recip_tab_bg" android:paddingLeft="10.0dip"
android:paddingTop="7.0dip" android:paddingRight="10.0dip"
android:paddingBottom="7.0dip" android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView android:textSize="14.669983dip" android:textColor="@color/black_75_transparent"
android:gravity="center" android:id="@+id/recip_sel_common_btn"
android:background="@drawable/tab_1_pressed" android:paddingTop="4.0dip"
android:paddingBottom="4.0dip" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/recipient_selection_common"
android:layout_weight="0.5" />
<TextView android:textSize="14.669983dip" android:textColor="@color/black_75_transparent"
android:gravity="center" android:id="@+id/recip_sel_all_btn"
android:background="@drawable/tab_2_normal" android:paddingTop="4.0dip"
android:paddingBottom="4.0dip" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/recipient_selection_all"
android:layout_weight="0.5" />
</LinearLayout>
<FrameLayout android:paddingTop="0.0dip"
android:layout_width="fill_parent" android:layout_height="0.0dip"
android:layout_weight="1.0">
<ListView android:scrollbarStyle="insideOverlay" android:id="@+id/item_listView"
android:background="@drawable/conversation_background"
android:fadingEdge="none" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:listSelector="@android:color/transparent"
android:cacheColorHint="@android:color/transparent" />
</FrameLayout>
<LinearLayout android:gravity="center_vertical"
android:background="@drawable/choose_bg" android:paddingLeft="10.0dip"
android:paddingTop="6.0dip" android:paddingRight="10.0dip"
android:paddingBottom="5.0dip" android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView android:textColor="@drawable/wall_btn_text_color"
android:gravity="center" android:id="@+id/recip_sel_ok_btn"
android:background="@drawable/wall_edit_button_post"
android:paddingLeft="20.0dip" android:paddingTop="5.5dip"
android:paddingRight="20.0dip" android:paddingBottom="5.5dip"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_marginRight="5.0dip" android:layout_weight="0.5" />
<TextView android:textColor="#ff616366" android:gravity="center"
android:id="@+id/recip_sel_cancel_btn" android:background="@drawable/cancel_btn"
android:paddingLeft="20.0dip" android:paddingTop="5.5dip"
android:paddingRight="20.0dip" android:paddingBottom="5.5dip"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_marginLeft="5.0dip" android:text="@string/cancel"
android:layout_weight="0.5" />
</LinearLayout>
</LinearLayout>
这是items.xml<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/item_imageView"
android:layout_width="65dp"
android:layout_height="65dp"
/>
<TextView
android:layout_marginLeft="10dp"
android:id="@+id/item_tv_name"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
></TextView>
<TextView
android:id="@+id/item_tv_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="80dp"
></TextView>
<CheckBox
android:id="@+id/item_checkbox"
android:layout_marginLeft="10dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:clickable="false"
android:focusable="false"
/>
</LinearLayout> 路过的帮忙定下哈 谢谢各位大大了
View itemView = (View) pListView.getChildAt(position);
TextView itemNametv = (TextView) itemView.findViewById(R.id.item_tv_name);
String name = itemNametv.getText().toString();
Log.i(TAG, name);
这里出空指针-->CheckBox itemCheckBox = (CheckBox) itemView.findViewById(R.id.item_checkbox);
上面这些代码改成如下试试: TextView itemNametv = (TextView)view.findViewById(R.id.item_tv_name);
String name = itemNametv.getText().toString();
Log.i(TAG, name);
CheckBox itemCheckBox = (CheckBox)view.findViewById(R.id.item_checkbox);