如何解决在获取保存响应时禁用Listview行中的按钮?
问题: 我在Mainactivity中有一个Listview。列表视图的每一行都有两个按钮,分别是SET和RUN。 按下SET键将带您进入SET活动,如果用户在SET Activity中单击“保存”按钮,则需要在mainactivity中的列表视图的相应行位置禁用SET按钮。
到目前为止完成: 为此,我在onclicklistener上具有刷新功能,以使用更新的值重新查询列表。如何在不按下Mainactivity或没有其他方法的情况下调用该刷新功能?
活动主要:
viewHolder.ButtonSET.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String title = v.getTag().toString();
if (title.equals("SET")) {
if (Integer.parseInt((String) viewHolder.TDNQTY.getText()) > 0) {
if(scanoverornot(pos)<=0) {
Intent s = new Intent(DN.this,SETActivity.class);
s.putExtra("position",pos);
s.putExtra("mode","SET");
try{
startActivityForResult(s,saverequestcode);
// getContext().startActivity(s);
}
catch(Exception e){
Toast.makeText(getContext(),""+e,Toast.LENGTH_LONG).show();
}
}
}
}
}
});
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data) {
if (data == null)
return;
switch (requestCode) {
case saverequestcode:
if (resultCode == RESULT_OK) {
String SItem= data.getStringExtra("SItem");
int SPos= data.getIntExtra("SPos",0);
saved = 700;
Toast.makeText(getApplicationContext(),""+ SItem+ SPos,Toast.LENGTH_LONG).show();
//btnvalidate.performClick();
}
}
}
活动设置:
Intent sav = new Intent();
sav.putExtra("SItem",String.valueOf(itemno));
sav.putExtra("SPos",String.valueOf(pos));
setResult(RESULT_OK,sav);
finish();
解决方法
您可以使用startActivityForResult
来达到此目的:
startActivityForResult(new Intent(this,DestinationActivity.class),MY_RESULT);
然后在您的MainActivity
中:
public int MY_RESULT = 10;
@Override
public void onActivityResult(int requestCode,int resultCode,Intent data) {
if (requestCode == MY_RESULT) {
if (resultCode == Activity.RESULT_OK) {
//refresh the list according to your logic
}
}
}
当用户单击“保存”按钮时,请不要忘记拨打setResult(Activity.RESULT_OK);
。
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
setResult(Activity.RESULT_OK);
}
});
,
问题行:
-
必须添加
super.onActivityResult(requestCode,resultCode,data);
-
删除了
switch
的情况,并使用if
条件进行requestCode
检查
解决方案:
@Override
protected void onActivityResult(int requestCode,Intent data) {
super.onActivityResult(requestCode,data);
if (data == null)
return;
if (requestCode == saverequestcode) {
if (resultCode == Activity.RESULT_OK) {
String SItem = data.getStringExtra("SItem");
String SPos = data.getStringExtra("SPos");
Toast.makeText(getApplicationContext(),"Item :" + SItem + "Position :" + SPos,Toast.LENGTH_LONG).show();
}
if (resultCode == Activity.RESULT_CANCELED) {
//Any methods
}
}
else if (requestCode == importrequestcode){
}
}
活动设置:
Intent sav = new Intent();
sav.putExtra("SItem",String.valueOf(itemno));
sav.putExtra("SPos",String.valueOf(pos));
setResult(Activity.RESULT_OK,sav);
finish();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。