微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – 如何更改Listview按钮名称在自定义适配器类中发送服务器请求后?

最近我正在开发一个基于在线的学生教师通信应用程序.在这个应用程序中,有一部分学生必须向教师发送要求在课堂上添加内容.

这是自定义适配器getView代码,我使用listview custiom按钮发送请求.我想将asynctask代码在这个适配器类中.但我无法做到这一点.内部listview onclick按钮方法无法识别asynctask方法.所以我把asynctask方法放在另一个类中.我想在此适配器类中放置asyntask方法,因为我想在onPostExecute方法中发送请求后将按钮名称“Request”更改为“Sent”.我手动更改了按钮名称,但我想确保用户100%发送请求.所以请告诉我在哪里必须将asynctask方法在这个适配器类中,以便我可以更改按钮名称.百万先谢谢.

package project.cc.student;
import java.util.ArrayList;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import com.example.connectifyclassroom.R;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class SubjectAdapter extends ArrayAdapterarams;
    public SubjectAdapter(Context context,int resource,ArrayListstemService(Context.LAYOUT_INFLATER_SERVICE);
        Resource = resource;
        contactList = objects;
        this.studentID = studentID;
        Log.d("bug","studentID" + studentID);
        params = new ArrayListetonClickListener(new Button.OnClickListener() {

                    @Override
                    public void onClick(View view) {
                        // Todo Auto-generated method stub

                        Integer pos = (Integer)view.getTag();
                        Button b = (Button) view;
                        sendRequest = new SendRequest();
                        Toast.makeText(getContext(),"Please Wait...",Toast.LENGTH_SHORT).show();

                        params.add(new BasicNameValuePair("studentID",Integer.toString(studentID)));
                        params.add(new BasicNameValuePair("teacherID",Integer.toString(contactList.get(pos).getTeacherUid())));
                        params.add(new BasicNameValuePair("subjectID",Integer.toString(contactList.get(pos).getSubjectUid())));
                        sendRequest.setPair(params);
                        sendRequest.startRequest();
                        Toast.makeText(getContext(),"Request Sent",Toast.LENGTH_SHORT).show();
                        b.setText("Sent");



                    }
                });
                v.setTag(holder);
            } else {
                holder = (ViewHolder) v.getTag();
            }

        holder.tvSubject.setText(contactList.get(position).getSubject());
        holder.tvTeacher.setText(contactList.get(position).getTeacher());
        holder.btSendRequest.setTag(position);

        return v;

    }

    static class ViewHolder {
        public TextView tvSubject;
        public TextView tvTeacher;
        public Button btSendRequest;

    }
}
最佳答案
我建议你通过回调来解决这个问题.

为此,请创建一个包含onRequestSended方法的接口(例如RequestStatusCallback).

>现在让SubjectAdapter实现此接口.
– > onRequestSended()更改按钮的外观.
>在SendRequest中创建一个ctor,它需要一个RequestStatusCallback实例.将其另存为Instance变量.
>如果SendRequest已成功发送请求,请调用回调的onRequestSended方法.

因此,只有在发出请求时,才会更新按钮.
现在你可以添加更多的回调,比如“onRequestFailed()”等……

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐