Java Android ListView和McLickListener()
我是Android编程的初学者。我试图使用JSON将来自MySQL数据库的ID标识符添加到我的listview项中,但我无法使其正常工作。当我点击一个项目时,它可能会给出我点击的项目的id,但它不起作用,我能得到的只是一个falseJava Android ListView和McLickListener(),java,android,Java,Android,我是Android编程的初学者。我试图使用JSON将来自MySQL数据库的ID标识符添加到我的listview项中,但我无法使其正常工作。当我点击一个项目时,它可能会给出我点击的项目的id,但它不起作用,我能得到的只是一个false public class MessagingListFragment extends Fragment { private String jsonResult; private String url = "http://10.0.2.2/mob
public class MessagingListFragment extends Fragment {
private String jsonResult;
private String url = "http://10.0.2.2/mobile/get_my_ins.php";
private ListView listView;
List<NameValuePair> nameValuePairs;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.messaging_list, container, false);
listView = (ListView) rootView.findViewById(R.id.listView1);
accessWebService();
return rootView;
}
// Async Task to access the web
@SuppressLint("NewApi")
private class JsonReadTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("stud_id",MainActivity.user_id));
try {
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
HttpResponse response = httpclient.execute(httppost);
jsonResult = inputStreamToString(
response.getEntity().getContent()).toString();
}
catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
private StringBuilder inputStreamToString(InputStream is) {
String rLine = "";
StringBuilder answer = new StringBuilder();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
try {
while ((rLine = rd.readLine()) != null) {
answer.append(rLine);
}
}
catch (IOException e) {
}
return answer;
}
@Override
protected void onPostExecute(String result) {
ListDrawer();
}
}// end async task
public void accessWebService() {
try{
JsonReadTask task = new JsonReadTask();
// passes values for the urls string array
task.execute(new String[] { url });
}catch(Exception e){
Toast.makeText(getActivity(), e.getMessage().toString() + " 3", Toast.LENGTH_LONG).show();
}
}
// build hash set for list view
public void ListDrawer() {
List<Map<String, String>> classList = new ArrayList<Map<String, String>>();
try {
JSONObject jsonResponse = new JSONObject(jsonResult);
JSONArray jsonMainNode = jsonResponse.optJSONArray("recipient");
for (int i = 0; i < jsonMainNode.length(); i++) {
JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
String friend = jsonChildNode.optString("last_name") + ", " + jsonChildNode.optString("first_name");
String outPut = friend;
classList.add(createMsgList("recipient", outPut));
}
} catch (JSONException e) {
Toast.makeText(getActivity(), e.getMessage().toString() + " 1", Toast.LENGTH_LONG).show();
}
try{
SimpleAdapter simpleAdapter = new SimpleAdapter(getActivity() , classList,
android.R.layout.simple_list_item_1, new String[] { "recipient" }, new int[] { android.R.id.text1 });
listView.setAdapter(simpleAdapter);
listView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> a, View v, int i,
long l) {
// TODO Auto-generated method stub
Toast.makeText(getActivity(), listView.getId(), Toast.LENGTH_LONG).show();
}
});
}catch(Exception e){
Toast.makeText(getActivity(), e.getMessage().toString() + " 2", Toast.LENGTH_LONG).show();
}
}
private HashMap<String, String> createMsgList(String name, String subject) {
HashMap<String, String> friendList = new HashMap<String, String>();
friendList.put(name, subject);
return friendList;
}
}
公共类MessagingListFragment扩展了片段{
私有字符串jsonResult;
专用字符串url=”http://10.0.2.2/mobile/get_my_ins.php";
私有列表视图列表视图;
列出nameValuePairs;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.messaging\u列表,容器,false);
listView=(listView)rootView.findViewById(R.id.listView1);
accessWebService();
返回rootView;
}
//访问web的异步任务
@SuppressLint(“新API”)
私有类JsonReadTask扩展了AsyncTask{
@凌驾
受保护的字符串doInBackground(字符串…参数){
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(url);
nameValuePairs=新的ArrayList(2);
添加(新的BasicNameValuePair(“stud_id”,MainActivity.user_id));
试一试{
setEntity(新的UrlEncodedFormEntity(nameValuePairs));
}捕获(不支持DencodingException e1){
//TODO自动生成的捕捉块
e1.printStackTrace();
}
试一试{
HttpResponse response=httpclient.execute(httppost);
jsonResult=inputStreamToString(
response.getEntity().getContent()).toString();
}
捕获(客户端协议例外e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
返回null;
}
私有StringBuilder inputStreamToString(InputStream为){
字符串rLine=“”;
StringBuilder answer=新建StringBuilder();
BufferedReader rd=新的BufferedReader(新的InputStreamReader(is));
试一试{
而((rLine=rd.readLine())!=null){
答:追加(rLine);
}
}
捕获(IOE异常){
}
返回答案;
}
@凌驾
受保护的void onPostExecute(字符串结果){
ListDrawer();
}
}//结束异步任务
public void accessWebService(){
试一试{
JsonReadTask=新建JsonReadTask();
//传递URL字符串数组的值
执行(新字符串[]{url});
}捕获(例外e){
Toast.makeText(getActivity(),例如getMessage().toString()+“3”,Toast.LENGTH_LONG).show();
}
}
//为列表视图生成哈希集
公开作废清单出票人(){
List classList=new ArrayList();
试一试{
JSONObject jsonResponse=新的JSONObject(jsonResult);
JSONArray jsonMainNode=jsonResponse.optJSONArray(“收件人”);
for(int i=0;i
您正在弹出一个祝酒词,文本内容为listView.getId()
。这将始终为您提供包含列表项的listview的ID
如果要获取视图的数据,则需要使用位置参数(int i
,在onItemClick方法中),或者如果是自定义视图,则可以尝试从视图v中获取数据
例如,您可以保留对数组的引用,而不是将字符串数组传递到适配器中,并通过调用
listView.getId()
来查找使用myArray[i]
查找的数据,方法是调用listView.getId()
改变
Toast.makeText(getActivity(), listView.getId(), Toast.LENGTH_LONG).show();
到
i
是listview
和JSONArray
希望这些信息对你有帮助
Toast.makeText(getActivity(), "my id and position = "+i, Toast.LENGTH_LONG).show();