关于给ListView item加点击事件。

zZzzoi 2017-09-19 08:17:04
package com.example.qqclient;

import java.io.IOException;
import java.util.ArrayList;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.example.qquser.QqUser;

import MySocket.MySocket;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;

public class ShowActivity extends Activity {

MySocket socket;
String jsonbuf;
MyHandler h;
QqUser user;
ArrayList<QqUser> users;
Myadapter adapter;
ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_show);
new Thread(new ClientThread()).start();


lv = (ListView) findViewById(R.id.lv1);
adapter = new Myadapter();

h = new MyHandler();
lv.setOnItemClickListener(new MyItemClickListener());

}
// 网络连接,得到登陆完传回来的jsonbuf
class ClientThread implements Runnable {
public void run() {
try {
socket = MySocket.getSocket();
jsonbuf = socket.getjsonbuf();
h.sendEmptyMessage(1);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

class MyHandler extends Handler {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
jsonstrToobj();
lv.setAdapter(adapter);
break;
}
}
}
//item点击监听
public class MyItemClickListener implements OnItemClickListener{

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// TODO Auto-generated method stub
QqUser userc = (QqUser) parent.getItemAtPosition(position);
System.out.println("position::"+position);
System.out.println(userc);
// System.out.println(user.getName());
}
}

//ListView 数据适配器
class Myadapter extends BaseAdapter{

@Override
public int getCount() {
// TODO Auto-generated method stub
return users.size();
}

@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}

@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub

QqUser user = users.get(position);
View view = View.inflate(ShowActivity.this, R.layout.list_item1, null);
TextView tv_name = (TextView) view.findViewById(R.id.tv_name);
tv_name.setText(user.getName());

TextView tv_qq = (TextView) view.findViewById(R.id.tv_qq);
tv_qq.setText(Integer.toString(user.getQq()));

return view;
}

}

//jsonbuf获取用户集合
public void jsonstrToobj(){
JSONObject obj;
try {
users = new ArrayList<QqUser>();
obj = new JSONObject(jsonbuf);
JSONArray arr = obj.getJSONArray("users");
for(int i=0; i<arr.length(); i++){
JSONObject o = arr.getJSONObject(i);
user = new QqUser();
user.setAge(o.getInt("age"));
user.setName(o.getString("name"));
user.setQq(o.getInt("qq"));
user.setSex(o.getBoolean("sex"));
user.setStatus(o.getBoolean("status"));
users.add(user);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


}




83行的地方,为什么user的值null?
点击的时候打印的position位置是正确的。
...全文
102 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧