我的需求是:当点击checkbox,获取题号并把题号上传到服务器,并得到服务器的响应。
我的代码是:
package cn.edu.aynu.rjxy.activity; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.http.HttpResponse; import org.apache.http.StatusLine; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import cn.edu.aynu.rjxy.entity.Data; import cn.edu.aynu.rjxy.utils.SharedPreferencesUtils; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; public class SetlectActivity extends Activity { private static final int CHANGE_UI = 1; private static final int CHANGE = 3; private ListView lv; private List<Data> datas = new ArrayList<Data>(); //主线程创建消息处理器 private Handler handler = new Handler(){ public void handleMessage(android.os.Message msg) { if (msg.what == CHANGE_UI) { try { JSONArray arr = new JSONArray((String)msg.obj); for (int i = 0; i < arr.length(); i++) { JSONObject temp = (JSONObject) arr.get(i); // Log.d("json", temp.getInt("id")+temp.getString("exp_name")+temp.getString("exp_tech")); Data data = new Data(); data.setId(temp.getInt("id")); data.setExp_name(temp.getString("exp_name")); data.setExp_tech(temp.getString("exp_tech")); //这个地方可以获取到值但是适配器那位0 datas.add(data); } lv.setAdapter(new MyAdapter()); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else if (msg.what == CHANGE) { Toast.makeText(SetlectActivity.this,(String)msg.obj, 1).show(); } }; }; private String sno; private String id; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_select); lv = (ListView) findViewById(R.id.lv); select(); //取出账号和密码 Map<String,String> userInfo = SharedPreferencesUtils.getUserInfo(this); if (userInfo != null) { sno = userInfo.get("sno"); id = userInfo.get("id"); } lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { } }); } private void select(){ //子线程更新UI new Thread(){ public void run(){ StringBuilder builder = new StringBuilder(); HttpClient client = new DefaultHttpClient(); String path = "http://10.6.78.254:2016/xampp/graduate/index.php/home/Student/test_android"; HttpGet httpGet = new HttpGet(path); try { HttpResponse response = client.execute(httpGet); StatusLine statusLine = response.getStatusLine(); int statusCode = statusLine.getStatusCode(); if (statusCode == 200) { BufferedReader reader = new BufferedReader (new InputStreamReader(response.getEntity().getContent(),"UTF-8")); for(String s=reader.readLine();s!=null;s=reader.readLine()) { builder.append(s); } String content = builder.toString(); System.out.println(content); //通知主线程更新UI Message message = new Message(); message.what = CHANGE_UI; message.obj = content; handler.sendMessage(message); }else{ Log.e(HomeActivity.class.toString(), "Failed"); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }; }.start(); } class MyAdapter extends BaseAdapter{ @Override public int getCount() { Log.d("AAA", ""+datas.size()); return datas.size(); } @Override public Object getItem(int position) { return datas.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { View view = View.inflate(SetlectActivity.this, R.layout.item_listview, null); TextView id = (TextView) view.findViewById(R.id.tv_id); TextView exp_name = (TextView) view.findViewById(R.id.tv_name); CheckBox cb_select = (CheckBox) view.findViewById(R.id.cb_select); Data data = datas.get(position); Log.d("aaaaa",datas.get(position).getExp_name() ); id.setText(String.valueOf(datas.get(position).getId())); exp_name.setText(datas.get(position).getExp_name()); exp_name.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(SetlectActivity.this, datas.get(position).getExp_tech(),0).show(); } }); cb_select.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { boolean isSaveSuccess = SharedPreferencesUtils.saveUserInfo03(SetlectActivity.this, sno, String.valueOf(datas.get(position).getId())); } } }); return view; } } }
设置list点击事件,事件包括checkbox的选中,获取题号临时存储,再设置选择按钮事件,提交。
恩,我的想法也是如此,因为checkbox不知道该如何实现,所以换成了button控件了。问题已经解决了。谢谢你呀。我的qq是1531698802.希望我们可以成为好友。可以跟你一起探讨更多的问题。
@kang_ya_ping: 加好友了。ID是周公
完全没看出来有了代码问主还想问什么
没关系,问题已经解决了。