繁体   English   中英

单击后Listview没有响应

[英]Listview not responding after clicking

我已经在doInBackground中完成了来自URl的JSON解析,并将结果显示在Listview中。 问题是,如果我单击列表项,那么它将显示有关列表项的详细信息。 我已经完成了LinkedIn集成。 从那我得到了列表中显示的连接列表。 因此,在单击每个连接项目后,它将显示有关连接的详细信息,例如名字,姓氏,标题,pictureurl等。那我该怎么做。

码:

       userProfile.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
        new GetContacts().execute();
        }


  class GetContacts extends AsyncTask<Void, Void, Void> {
        String firstname;
        String id;
        String headline;
        String lastname;
        String pictureUrl;
        String url;

            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                // Showing progress dialog
                pDialog = new ProgressDialog(LinkedInSampleActivity.this);
                pDialog.setMessage("Please wait...");
                pDialog.setCancelable(false);
                pDialog.show();

            }

            @Override
            protected Void doInBackground(Void... params) {
                DefaultHttpClient httpclient = new DefaultHttpClient();
                try{
                    HttpGet httpget = new HttpGet(
                            "url");
                    HttpResponse response = httpclient.execute(httpget);
                    String jsonResp = EntityUtils.toString(response.getEntity());
                    Log.d("HTTP","Rsponse : "+ jsonResp);

                    if (jsonResp!= null) {

                    JSONObject jsonObject1=new JSONObject(jsonResp);
                    JSONArray jsonArray = jsonObject1.getJSONArray("values");
                    for (int i = 0; i < jsonArray.length(); i++) {
                    JSONObject jsonObject2 = jsonArray.getJSONObject(i);
                    String firstname = jsonObject2.getString("firstName");
                    String lastname = jsonObject2.getString("lastName");
                    String headline = jsonObject2.getString("headline");
                    String pictureUrl = jsonObject2.getString("pictureUrl");
                    String id = jsonObject2.getString("id");
                    JSONObject jsonObject3 = jsonObject2.getJSONObject("siteStandardProfileRequest");
                    String url = jsonObject3.getString("url");
                    Log.d("HTTP", "firstname : " + firstname + "\n" + "lastName :"
                            + lastname + "\n" + "headline : " + headline + "\n"
                            + "pictureUrl :" + pictureUrl + "\n" + "id :"
                            + id + "\n" + "Url :" + url);

                    HashMap<String, String> contact = new HashMap<String, String>();
                    contact.put(TAG_ID, id);
                    contact.put(TAG_FNAME, firstname);
                    contact.put(TAG_LNAME, lastname);
                    contact.put(TAG_HLINE, headline);
                    contact.put(TAG_PURL, pictureUrl);
                    contact.put(TAG_URL, url);
                    contactList.add(contact);

                    }
                }else {
                    Log.e("HTTP", "Couldn't get any data from the url");
                } 
                }catch (Exception e) {
                    e.printStackTrace();
            }   
                return null;
                }   

            @Override
            protected void onPostExecute(Void result) {
                super.onPostExecute(result);
                // Dismiss the progress dialog
                if (pDialog.isShowing())
                    pDialog.dismiss();

                ListAdapter adapter = new SimpleAdapter(
                        LinkedInSampleActivity.this, contactList,
                        R.layout.list_item, new String[] {TAG_FNAME}, new int[] {R.id.textView1 });
                setListAdapter(adapter);
                lv = getListView();
                lv.setOnItemClickListener(new OnItemClickListener() {
                      public void onItemClick(AdapterView<?> parent, View view,
                          int position, long id) {
                          Intent i = new Intent(getApplicationContext(), SingleListItem.class);
                          i.putExtra("id", id);
                          i.putExtra("firstname", firstname);
                          i.putExtra("lastname", lastname);
                          i.putExtra("headline", headline);
                          i.putExtra("pictureUrl", pictureUrl);
                          i.putExtra("url", url);
                        startActivity(i);
                      }
                    });

            }   }
    });
}

在SingleListItem.java类中,我这样写:

 public class SingleListItem extends Activity{
 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.single_list_item);
     TextView tv = (TextView)findViewById(R.id.fname);
       Intent i = this.getIntent();
       if(i!=null){
           String id = i.getStringExtra("id");
           String firstname = i.getStringExtra("firstname");
           String lastname = i.getStringExtra("lastname");
           String headline = i.getStringExtra("headline");
           String pictureUrl = i.getStringExtra("pictureUrl");
           String url = i.getStringExtra("url");
           Log.v("LV","id :"+id+"\n"+"firstname :"+firstname+"\n"+"lastname :"+lastname+"\n"+"headline :"+headline+"\n"+"pictureUrl :"+pictureUrl);
          //tv.setText("id :"+id+"\n"+"firstname :"+firstname+"\n"+"lastname :"+lastname+"\n"+"headline :"+headline+"\n"+"pictureUrl :"+pictureUrl);   
       }else{
           Toast.makeText(getApplicationContext(), "Intent no get", Toast.LENGTH_SHORT).show();
       }

}
}

编译后,我得到文本的空值。

08-01 06:04:29.330: V/LV(1759): id :null
08-01 06:04:29.330: V/LV(1759): firstname :null
08-01 06:04:29.330: V/LV(1759): lastname :null
08-01 06:04:29.330: V/LV(1759): headline :null
08-01 06:04:29.330: V/LV(1759): pictureUrl :null

您的startActivity(i);在哪里startActivity(i); 将其放在onClick()中

在onItemClick(... startActivity(intent)中,缺少startActivity(intent)

Intent i = new Intent(getApplicationContext(), SingleListItem.class);
i.putExtra("id", id);
i.putExtra("firstname", firstname);
i.putExtra("lastname", lastname);
i.putExtra("headline", headline);
i.putExtra("pictureUrl", pictureUrl);
i.putExtra("url", url);
startActivity(i);

不要忘记在manifest声明SingleListItem

编辑:1因为您必须根据位置从string array's HashMap获取这些值,所以请尝试调试onItemClick(...)

我认为您必须在oncreate()方法中调用listview的单击侦听器事件,而不是在AsyncTask的后执行中调用,因此请尝试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM