最近我正在开发一个基于在线的师生交流应用程序。在这个应用程序中有一个部分,学生必须向老师发送请求以添加到他的类(class)中。
这是自定义适配器 getView 代码,我在其中使用 ListView 自定义按钮发送请求。我想将 asynctask 代码放在这个适配器类中。但我做不到。 listview 内部的 onclick 按钮方法无法识别 asynctask 方法。所以我将 asynctask 方法放在另一个类中。我想在此适配器类中放置 asyntask 方法,因为我想在 onPostExecute"Request" 更改为 "Sent" b> 方法。我手动更改了按钮名称,但我想确保用户已 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 ArrayAdapter<Subject> {
ArrayList<Subject> contactList;
LayoutInflater vi;
int Resource;
ViewHolder holder;
int studentID;
SendRequest sendRequest;
String requestUrl;
ArrayList<NameValuePair> params;
public SubjectAdapter(Context context, int resource, ArrayList<Subject> objects,int studentID) {
super(context, resource, objects);
vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
Resource = resource;
contactList = objects;
this.studentID = studentID;
Log.d("bug", "studentID" + studentID);
params = new ArrayList<NameValuePair>();
}
@Override
public View getView( final int position, View convertView, ViewGroup parent) {
// convert view = design
View v = convertView;
if (v == null) {
holder = new ViewHolder();
v = vi.inflate(Resource, null);
holder.tvSubject = (TextView) v.findViewById(R.id.tvSujectName);
holder.tvTeacher = (TextView) v.findViewById(R.id.tvTeacherName);
holder.btSendRequest = (Button) v.findViewById(R.id.bt_send_subject_request);
holder.btSendRequest.setOnClickListener(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;
}
}
最佳答案
我认为你是 android 的新手。这不是好的解决方案,但它会帮助你。在请求按钮之后,在您的适配器类中设置一个线程 3 秒,并在您的项目中创建一个名为 isSend() 的标志。更改发送异步任务 onpost() 方法中的标志。比检查线程中的标志。希望对您有所帮助。
关于android - 如何在自定义适配器类中发送服务器请求后更改 Listview 按钮名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30531346/
出于纯粹的兴趣,我很好奇如何按顺序创建PI,而不是在过程结果之后生成数字,而是让数字在过程本身生成时显示。如果是这种情况,那么数字可以自行产生,我可以对以前看到的数字实现垃圾收集,从而创建一个无限系列。结果只是在Pi系列之后每秒生成一个数字。这是我通过互联网筛选的结果:这是流行的计算机友好算法,类机器算法:defarccot(x,unity)xpow=unity/xn=1sign=1sum=0loopdoterm=xpow/nbreakifterm==0sum+=sign*(xpow/n)xpow/=x*xn+=2sign=-signendsumenddefcalc_pi(digits
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
我在MiniTest::Spec和Capybara中使用以下规范:find_field('Email').must_have_css('[autofocus]')检查名为“电子邮件”的字段是否具有autofocus属性。doc说如下:has_css?(path,options={})ChecksifagivenCSSselectorisonthepageorcurrentnode.据我了解,字段“Email”是一个节点,因此调用must_have_css绝对有效!我做错了什么? 最佳答案 通过JonasNicklas得到了答案:No
exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby中使用两个参数异步运行exe吗?我已经尝试过ruby命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何rubygems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除
鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende
我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢
我正在为一个项目制作一个简单的shell,我希望像在Bash中一样解析参数字符串。foobar"helloworld"fooz应该变成:["foo","bar","helloworld","fooz"]等等。到目前为止,我一直在使用CSV::parse_line,将列分隔符设置为""和.compact输出。问题是我现在必须选择是要支持单引号还是双引号。CSV不支持超过一个分隔符。Python有一个名为shlex的模块:>>>shlex.split("Test'helloworld'foo")['Test','helloworld','foo']>>>shlex.split('Test"
我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121