场景:笔者定义了一个listview由一个imageview和两个textview组成,当点击listview其中一个item的时候
会弹出一个SingleChoice的dialog,当选择一个choice item后,会根据这个选择更新listview当前item的一个
textview内容.
通讯的方式采用的是message Handler的方式
点击了listiew某个item后,进入SelectDialog.java,其中关键的一步为:
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Message msg = new Message();
msg.what = 0;
msg.arg1 = which;
mUIHandler.sendMessage(msg);
mModeDialog.dismiss();
}
将对应的choice索引通过msg发送出去
在listview所在的activity类中,定义一个handler
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 0: {
// Toast.makeText(mContext, mSleepEntries[msg.arg1],
// Toast.LENGTH_SHORT).show();
int value = Integer.parseInt((String) mSleepValues[msg.arg1]);
Settings.System.putInt(getContentResolver(),
SCREEN_OFF_TIMEOUT, value);
if (msg.arg1 + 1 == mSleepEntries.length)
map_sleep.put(
"SystemStatusText",
getString(R.string.screen_never_timeout_summary,
mSleepEntries[msg.arg1]));
else
map_sleep.put(
"SystemStatusText",
getString(R.string.screen_timeout_summary,
mSleepEntries[msg.arg1]));
listItemAdapter.notifyDataSetChanged();
}
break;
case 1:
break;
case 2:
break;
default:
break;
}
}
};
其中还有关键的一点在于listiew某个item的textview与choice dialog items用到了同一个字符串数组mSleepEntries
通过传递索引值,将对用的值设置到textview