今天热门
热点:

ListView修改item某个控件属性的问题:在只有一个item时,可以进行修改,但是有两个或者以上的item时就出现了异常具体代码如下,


//这里是点击某个item执行下面的方法
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
//Address address = addresses.get(position);
//Address address2 = (Address) listView.getItemAtPosition(position);
Intent intent = new Intent(AddressActivity.this, EditAddressActivity.class);
startActivityForResult(intent, 2);
adapter.notifyDataSetChanged();
}
});
//这里是使用intent回调数据,并让数据显示到item上。实现修改item数据的效果。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1&&resultCode == 2){
UserName = data.getStringExtra("userName");
cellNum = data.getStringExtra("cellPhoneNum");
detailAddress = data.getStringExtra("detailAddress");
initAddress(UserName, cellNum, detailAddress);
}
else if(requestCode ==2&&resultCode == 3){
UserName = data.getStringExtra("userName");
cellNum = data.getStringExtra("cellNum");
detailAddress = data.getStringExtra("detailAddress");
editAddress(UserName, cellNum, detailAddress);
}
}
private void editAddress(String username, String cellnumber, String detailaddress){
TextView tv_userName = (TextView) findViewById(R.id.textView1_userName);
TextView tv_cellNum = (TextView) findViewById(R.id.textView2d_cellP);
TextView tv_detailAddress = (TextView) findViewById(R.id.Add_detail);
tv_userName.setText(username);
tv_cellNum.setText(cellnumber);
tv_detailAddress.setText(detailaddress);

//adapter.clear();
}
//这里是第二个activity回传数据的方法
public void onClick(View arg0) {
Intent intent = new Intent();
String userName = et_1.getText().toString();
String cellNum = et_2.getText().toString();
String detailAddress = et_3.getText().toString();
intent.putExtra("userName", userName);
intent.putExtra("cellNum", cellNum);
intent.putExtra("detailAddress", detailAddress);
setResult(3, intent);
finish();
}
});
小弟不才,自学初入android,有许多不懂的地方。每天看论坛大家的讲解慢慢积累知识,这个问题我实在不知道怎么回事。请大神帮帮忙。
大概问题是我只有一个item的时候,我可以对其进行编辑。但是有两个或以上item时就不能编辑item的值。

解决方案

你点击时,在onactivityResult打印一下你是否获取到了值

貌似有点头绪了,你可以先检查下resultCode的值是不是3;

还有这几个(TextView) findViewById(R.id.textView1_userName);
TextView tv_cellNum = (TextView) findViewById(R.id.textView2d_cellP);
TextView tv_detailAddress = (TextView) findViewById(R.id.Add_detail);
这几个findView可能没找到正确的位置,多个item的话就有多个叫textView1_userName的东西了,你这样通过editAddress方法找的话,应该是找不到指定的item的

我这里一般的onItemClick做法是这样的:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                你的view=view.findViewById(R.id.你的id)
……
要做的逻辑,点击事件什么的,可以在这里startActivityForResult什么的
……
            }
        });




如果你想通过activityResult的方式来做,我这里是通过更改adapter的数据源,然后notifyDataSetChanged();来实现的。例如,我要更改第二个数据,如果原来第二个item的数据是1,那我就在OnActivityResult中将它的值改为自己想要的值,重新赋给adapter,并调用adapter.notifyDataSetChanged();

6楼正解,给你说个简单的做法,具体做法如下:
onItemClick的时候记录下点击位置的对象;在onActivityResult中更新记录的对象,然后调用adapter.notifyDataSetChanged();

设置全局变量



//全局变量
Address address; 

//onItemClick中记录点击的对象
address = adapter.getItem(arg2);

//onActivityResult更新记录的对象,并更新界面
address.userName = username;
......
adapter.notifyDataSetChanged()



www.zrccd.nettrue/topics/20181009/188617.htmlTechArticleListView修改item某个控件属性的问题:在只有一个item时,可以进行修改,但是有两个或者以上的item时就出现了异常具体代码如下, //这里是点击某个item执行下面的方法 publicvoidonItemClic...

相关文章

    暂无相关文章

用户评论

大家都在看