Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android ListView和McLickListener()_Java_Android - Fatal编程技术网

Java Android ListView和McLickListener()

Java 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

我是Android编程的初学者。我试图使用JSON将来自MySQL数据库的ID标识符添加到我的listview项中,但我无法使其正常工作。当我点击一个项目时,它可能会给出我点击的项目的id,但它不起作用,我能得到的只是一个false

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();