方案:
我有customAdapter
,feeditem
我set
和get
数据,ReplyActivity
和MainActivity
。
MainActivity
从data
检索server
,并使用ListView
将其显示为customAdapter
。 ListView
btnReply
显示customAdapter
onClick
,ReplyActivity
ReplyActivity
已打开。{/ p>
在EditText
上,我有一个Button
和一个onButtonClick
,在写完text
之后,来自EditText
的{{1}}为{{ 1}}到send
,然后保存在server
,而SharedPreferences
已关闭,只需调用ReplyActivity
而不启动任何finish()
,这会将Activity
带到使用我的MainActivity
的前景。
我已经有了一个逻辑来检测我的Adapter
是否被MainActivty
foreground
带到了finishing
。
现在我的问题是,我如何仅更新ReplyActivity
repStatus
导致position
btnReply
clicked
ReplyActivity
的地方{/ 1}}?
我搜索了所有与这种情况无关的答案。虽然,我遇到this here on SO,但在这种情况下无法工作。
如果有人可以帮助我如何做到这一点或指出任何可以帮助我实现这一目标的资源将受到高度赞赏。
我的适配器:
public class FeedListAdapter extends BaseAdapter implements View.OnCreateContextMenuListener {
private Activity activity;
private LayoutInflater inflater;
public View getView(final int position, View convertView, ViewGroup parent) {
// session = new SessionManager(MediaActivity.class);
if (inflater == null)
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = inflater.inflate(R.layout.feed_item, null);
convertView.setLongClickable(true);
}
if (imageLoader == null)
imageLoader = AppController.getInstance().getImageLoader();
final TextView name = (TextView)convertView.findViewById(R.id.name);
final Button btnReply = (Button)convertView.findViewById(R.id.btnReply);
final TextView statusMsg = (TextView)convertView.findViewById(R.id.txtStatusMsg);
final TextView repStatus = (TextView)convertView.findViewById(R.id.repStatus);
btnReply.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), ReplyActivity.class);
intent.putExtra("statusId", statusId.getText().toString());
intent.putExtra("username", userName.getText().toString());
v.getContext().startActivity(intent);
}
});
}
}
答案 0 :(得分:0)
在您的MainActivity中覆盖onResume方法之后,您可以在适配器中使用onResume中的公共方法
注意:OnResume将在OnCreate方法之后第一次被调用,所以要注意这一点并找到一种方法来区分第一个OnResume和下一个OnResume调用之间的区别,这些调用是在您的活动到达前台时触发的
答案 1 :(得分:0)
这里有两个选项 -
最佳做法是拨打startActivityForResult(intent)
并覆盖onActivityResult()
内的MainActivity
回调方法。(guide here)
第二个选项是在boolean firstTime = false
内设置ShardPreference ReplyActivity
并检查onResume
内的覆盖MainActivity
内部,并检查这是否是第一次。 (onResume
在任何时候都会被调用,重新启动UI再次回到前面 - 并且onCreat
之后
答案 2 :(得分:0)
您可以使用onResume()方法。
@Override
public void onResume() {
super.onResume(); // Always call the superclass method first
// Check here if the text from edittext was saved in sharedpreference or not.
// Refresh the adapter
adapter.notifyDataSetChanged()
}
在此处详细说明:https://developer.android.com/training/basics/activity-lifecycle/pausing.html
更新repStatus: 实现onListItemClick。然后,通过id获取视图并更新它。