开发的时候使用listview来列出个人资料,或者好友资料
如果修改了其中的一项,好像又找不到对应的view,进行更新,当然如果
你不使用listview,而使用textview+imageview罗列,这个问题就不会出现了
现在情况是使用listview,又要更新怎么办?
这是一个Adapter,用于将数据转换显示在listview控件上面:
// list adapter inner class
class ListItemAdapter extends BaseAdapter {
@Override
public int getCount() {
// TODO Auto-generated method stub
return mSetKey.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
// 获取某一项view的逻辑处理
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
LinearLayout layout = (LinearLayout) mInflater.inflate(
R.layout.personal_profile_listitem, null);
TextView title = (TextView) layout
.findViewById(R.id.personal_profile_listitem_title);
title.setText(mSetKey[position]);
TextView body = (TextView) layout
.findViewById(R.id.personal_profile_listitem_body);
body.setText(mValue[position]);
return layout;
}
}
说明一下:mKey,mValue是两个String数组,当然也可以用list,mKey是存储title,比如说性别,年龄,个人签名等等,
mValue是值,比如说性别为男,年龄20等等
onclick事件处理:
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
this.mTempView = v;
switch (position) {
case 0:
break;
case 1:
break;
case 2:
break;
}
}
注意本人使用的listactivity
在case中间可以加入你们的修改逻辑处理,这里就不写代码了
mTempView是一个临时的view变量,当然是一个全局变量
用于获取点击的view
这里是更新函数,调用即可更新:
更新性别
public void refreshGender(int gender) {
TextView currView = (TextView) mTempView
.findViewById(R.id.personal_profile_listitem_body);
currView.setText(convertToGender(gender));
}
更新生日
public void refreshBirthday(String birthday) {
TextView currView = (TextView) mTempView
.findViewById(R.id.personal_profile_listitem_body);
currView.setText(getBirthday());
}
更新签名
public void refreshSignature(String signature) {
TextView currView = (TextView) mTempView
.findViewById(R.id.personal_profile_listitem_body);
currView.setText(signature);
}
这里的personal_profile_listitem是xml文件中的值对应的view名称
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/personal_profile_listitem_title"
android:layout_width="100px"
android:layout_height="80px"
android:layout_marginLeft="20px"
android:gravity="center"
android:textSize="16dip"
/>
<TextView
android:id="@+id/personal_profile_listitem_body"
android:layout_width="180px"
android:layout_marginRight="20px"
android:layout_height="80px"
/>
</LinearLayout>
也就是Adapter接口view使用的layout
listview xml
<LinearLayout android:id="@+id/app_body"
android:layout_width="fill_parent" android:layout_height="300px"
android:layout_weight="1">
<ListView android:id="@android:id/list" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:cacheColorHint="#00000000"
android:divider="@drawable/line" android:listSelector="@drawable/selectitem"
android:drawSelectorOnTop="false">
</ListView>
</LinearLayout>