android新手问题送分了(结贴率100%)

码密码密哄 2011-06-30 03:12:15
我的实现效果是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);
}
}
...全文
152 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
码密码密哄 2011-07-01
  • 打赏
  • 举报
回复
不好 意思 分给少了 不好分 忘大家不要介意
码密码密哄 2011-07-01
  • 打赏
  • 举报
回复
5楼的哥哥帅气 威武 谢谢各位参与的大大了
迷世书童 2011-07-01
  • 打赏
  • 举报
回复
学习中。。。
Nihn 2011-07-01
  • 打赏
  • 举报
回复
继续关注!
xinqiqi123 2011-06-30
  • 打赏
  • 举报
回复
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);
上面这些代码改成如下试试:

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);
码密码密哄 2011-06-30
  • 打赏
  • 举报
回复
问题带图原件网站

http://www.eoeandroid.com/forum-viewthread-tid-82491-fromuid-492573.html


other.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>



路过的帮忙定下哈 谢谢各位大大了
思考的芦苇 2011-06-30
  • 打赏
  • 举报
回复
CheckBox itemCheckBox = (CheckBox) itemView.findViewById(R.id.item_checkbox);
这句跳空指针错误,说明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是你自定义的,问题应该会出在那儿,代码可以贴上来,或者用一楼的先试试。

perfe_ct 2011-06-30
  • 打赏
  • 举报
回复
确定下id为item_checkbox的CheckBox元素是否在other.xml中
码密码密哄 2011-06-30
  • 打赏
  • 举报
回复
adapter补上
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;
}

80,352

社区成员

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

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