ユーザーをロードするアダプターと、招待状を送信するための 1 つのボタン/テキストファイルがあります。アダプターでこれを行います:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
UserAgenda ua = getItem(position);
ViewHolder holder;
if (convertView == null) {
//...
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
if(ua.getInvited() != null){
if(ua.getInvited().equals("true")){
addTextViewInvited(convertView);//add a textview as the user is invited
}
else if(ua.getInvited().equals("false")){
addButton2Invite(convertView,ua);//add the button to invite
}
}
return convertView;
}
addButton2Invite のメソッドで、招待を次のように送信します。
private void addButton2Invite(final View convertView, UserAgenda ua) {
bt2Invited.setOnClickListener(new OnClickListener() {
@Override
public void onClick(final View v) {
final Button bt2Invited = (Button) convertView.findViewById(R.id.bt2invite);
final ProgressBar pbar = (ProgressBar) convertView.findViewById(R.id.progress);
new Thread(){
@Override
public void run() {
if(networkWork())
ua.setInvited("true"); //Error, NOT PERMITED! ua need to be final.
};
}.start();
}
});
}
networkWork が OK のときに を設定したいのですua.setInvited("true");
が、ua を として宣言しないと許可されませんfinal
。しかし、その後、その値を変更することはできず、次にアダプターが getView に入ると、ua.getInvited() = "false"
. テキストビューを上下にスクロールすると、行にボタンが表示されます。
内のオブジェクト UserAgenda ua の値を変更するアイデアはありますonClicklistener
か?
ありがとう!