2015-03-05 3 views
-2
  1. Ниже мой код, здесь я получаю ответ ..ListView CustomAdapter GetView не называет

    Fetching Data from server in josn 
    
    
         getRequest(); 
            list = (ListView) findViewById(R.id.list); 
            list.setAdapter(adapter); 
            list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
             @Override 
             public void onItemClick(AdapterView<?> parent, View view, 
                   int position, long id) { 
    
             } 
            }); 
    
        // 
    
          private void getRequest(){ 
            Thread trd = new Thread(new Runnable() { 
             @Override 
             public void run() { 
              DefaultHttpClient httpClient = new DefaultHttpClient(); 
              HttpEntity httpEntity = null; 
              HttpResponse httpResponse = null; 
    
        // 
    
    
              try{ 
               Log.d("Get top called","try block"); 
               HttpGet httpGet = new HttpGet(url); 
               httpResponse = httpClient.execute(httpGet); 
               httpEntity = httpResponse.getEntity(); 
               response = EntityUtils.toString(httpEntity); 
               if(response!=null){ 
                try{ 
                 HashMap<String, String> defaultSongsDetails; 
                 songs = new JSONArray(response); 
                 JSONObject jsonObject; 
                 for(int i=0;i<songs.length();i++){ 
    
                  defaultSongsDetails = new HashMap<String, String>(); 
    
                  String title,artist,language,imageUrl,songUrl,vocalUrl,duration=null; 
                  String sdCardPathOfImage,sdCardPathOfOriginalSong,sdCardPathOfVocalSong=null; 
    
                  jsonObject = songs.getJSONObject(i); 
    
                  title = jsonObject.getString(SONG_TITLE); 
                  defaultSongsDetails.put("song_title",title); 
    
                  artist = jsonObject.getString(SONG_ARTIST); 
                  defaultSongsDetails.put("song_artist",artist); 
    
    
    
    
                  language = jsonObject.getString(SONG_LANGUAGE); 
                  defaultSongsDetails.put("song_language",language); 
    
                  duration = jsonObject.getString(SONG_DURATION); 
                  defaultSongsDetails.put("song_duration",duration); 
    
                  imageUrl = jsonObject.getString(SONG_THUMBNAL); 
                  songUrl = jsonObject.getString(SONG_DOWNLOAD_URL); 
                  vocalUrl = jsonObject.getString(SONG_VOCAL_URL); 
    
                  String thumbnail=null; 
                  int cutImg = imageUrl.lastIndexOf('/'); 
                  if (cutImg != -1) { 
                   thumbnail = imageUrl.substring(cutImg + 1); 
                  } 
                  sdCardPathOfImage = basepath + "/songs/" + thumbnail; 
                  defaultSongsDetails.put("song_thumbnail", sdCardPathOfImage); 
    String fileName=null; int cut = songUrl.lastIndexOf('/'); if (cut != -1) { fileName = songUrl.substring(cut + 1); } 
    

    sdCardPathOfOriginalSong = BasePath + "/ песни /" + имя_файла; defaultSongsDetails.put ("song_original_path",
    sdCardPathOfOriginalSong); String vocalFileName = null; int cutVocal = songUrl.lastIndexOf ('/'); if (cut! = -1) {vocalFileName = songUrl.substring (cutVocal + 1); } sdCardPathOfVocalSong = basepath + "/ songs /" + vocalFileName; defaultSongsDetails.put ("song_vocal_path", sdCardPathOfVocalSong);
    // Добавление Hashmap в ArrayList defaultSongsDetailList.add (defaultSongsDetails); adapter = новый CustomList (JsonActivity.this, defaultSongsDetailList); } catch (Исключение e) {e.printStackTrace(); }}} catch (Исключение e) {e.printStackTrace(); }}
    }); trd.start(); }

    //CustomList Adapter class 
    
    
          public class CustomList extends ArrayAdapter<HashMap<String, String>>{ 
           private final Activity context; 
    
           private ArrayList<HashMap<String, String>> songList; 
           public CustomList(Activity context, 
                 ArrayList<HashMap<String, String>> songList) { 
            super(context, R.layout.list_item_view, songList); 
            this.context = context; 
            this.songList = songList; 
           } 
           @Override 
           public View getView(int position, View view, ViewGroup parent) { 
            LayoutInflater inflater = context.getLayoutInflater(); 
            View rowView= inflater.inflate(R.layout.list_item_view, null, true); 
            TextView txtTitle = (TextView) rowView.findViewById(R.id.title); 
            ImageView imageView = (ImageView) rowView.findViewById(R.id.list_image); 
            TextView txtArtist = (TextView) rowView.findViewById(R.id.artist); 
            TextView txtDuration = (TextView) rowView.findViewById(R.id.duration); 
    
            System.out.println(" title ** "+songList.get(position).get("song_title")+" duration ** 
    

    "+ songList.get (положение) .get (" song_duration ") +" палец ** "+ songList.get (положение) .get (" song_thumbnail ") +" язык **
    "+ songList.get (позиция) .get (" song_language "));

        txtArtist.setText(songList.get(position).get("song_title")); 
            txtDuration.setText(songList.get(position).get("song_duration")); 
    
            File file = new File(songList.get(position).get("song_thumbnail")); 
            Uri uri = Uri.fromFile(file); 
           imageView.setImageBitmap(BitmapFactory.decodeFile(defaultFilePath)); 
             imageView.setImageURI(uri); 
            txtTitle.setText(songList.get(position).get("song_language")); 
    
            return rowView; 
           } 
          } 
    
    
        Any help would be appreciated... 
    

ответ

0
//Fetching Data from server in josn 
     getRequest(); 

     gAdapter = new BaseAdapter(HomeJsonActivity.this, defaultSongsDetailList);; 
     list = (ListView) findViewById(R.id.list); 
     gAdapter.notifyDataSetChanged(); 
     list.setAdapter(gAdapter); 
     list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, 
            int position, long id) { 
      } 
     }); 

private void getRequest() { 
     Thread trd = new Thread(new Runnable() { 
      @Override 
      public void run() { 
       DefaultHttpClient httpClient = new DefaultHttpClient(); 
       HttpEntity httpEntity = null; 
       HttpResponse httpResponse = null; 

       try { 
        Log.d("Get top called", "try block"); 
        HttpGet httpGet = new HttpGet(url); 
        httpResponse = httpClient.execute(httpGet); 
        httpEntity = httpResponse.getEntity(); 
        response = EntityUtils.toString(httpEntity); 
        if (response != null) { 
         try { 
          HashMap<String, String> defaultSongsDetails; 
          songs = new JSONArray(response); 
          JSONObject jsonObject; 
           defaultSongsDetails = new HashMap<String, String>(); 

           String title, artist, language, imageUrl, songUrl, vocalUrl, duration = null; 
           String sdCardPathOfImage, sdCardPathOfOriginalSong, sdCardPathOfVocalSong = null; 

           jsonObject = songs.getJSONObject(i); 

           title = jsonObject.getString(SONG_TITLE); 
           defaultSongsDetails.put("song_title", title); 

           artist = jsonObject.getString(SONG_ARTIST); 
           defaultSongsDetails.put("song_artist", artist); 

           language = jsonObject.getString(SONG_LANGUAGE); 
           defaultSongsDetails.put("song_language", language); 

           duration = jsonObject.getString(SONG_DURATION); 
           defaultSongsDetails.put("song_duration", duration); 

           imageUrl = jsonObject.getString(SONG_THUMBNAL); 
           songUrl = jsonObject.getString(SONG_DOWNLOAD_URL); 
           vocalUrl = jsonObject.getString(SONG_VOCAL_URL); 

           String thumbnail = null; 
           int cutImg = imageUrl.lastIndexOf('/'); 
           if (cutImg != -1) { 
            thumbnail = imageUrl.substring(cutImg + 1); 
           } 
           sdCardPathOfImage = basepath + "/songs/" + thumbnail; 
           defaultSongsDetails.put("song_thumbnail", sdCardPathOfImage); 
           String fileName = null; 
           int cut = songUrl.lastIndexOf('/'); 
           if (cut != -1) { 
            fileName = songUrl.substring(cut + 1); 
           } 
           sdCardPathOfOriginalSong = basepath + "/songs/" + fileName; 
           defaultSongsDetails.put("song_original_path", sdCardPathOfOriginalSong); 

           String vocalFileName = null; 
           int cutVocal = songUrl.lastIndexOf('/'); 
           if (cut != -1) { 
            vocalFileName = songUrl.substring(cutVocal + 1); 
           } 
           sdCardPathOfVocalSong = basepath + "/songs/" + vocalFileName; 
           defaultSongsDetails.put("song_vocal_path", sdCardPathOfVocalSong); 

           defaultSongsDetailList.add(defaultSongsDetails); 
          } 

         } catch (Exception e) { 
          e.printStackTrace(); 
         } 
        } 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
     trd.start(); 

    } 

//Custom Base Adapter Class 

public class BaseAdapter extends BaseAdapter { 
    private LayoutInflater mInflater; 
    private ArrayList<HashMap<String, String>> songList; 

    public BaseAdapter(Context context, ArrayList<HashMap<String, String>> list) { 
     this.mInflater = LayoutInflater.from(context); 
     this.songList = list; 
     for (HashMap hh : songList) { 
      System.out.println("**** hh ***" + hh); 
     } 
    } 

    @Override 
    public int getCount() { 
     return songList.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return songList.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View rowView; 
     ViewHolder holder; 
     if (convertView == null) { 
      rowView = mInflater.inflate(R.layout.list_item_view, parent, false); 
      holder = new ViewHolder(); 
      holder.title = (TextView) rowView.findViewById(R.id.title); 
      holder.thumb = (ImageView) rowView.findViewById(R.id.list_image); 
      holder.artist = (TextView) rowView.findViewById(R.id.artist); 
      holder.duration = (TextView) rowView.findViewById(R.id.duration); 

      rowView.setTag(holder); 
     } else { 
      rowView = convertView; 
      holder = (ViewHolder) rowView.getTag(); 
     } 
     holder.title.setText(songList.get(position).get("song_title")); 
     File file = new File(songList.get(position).get("song_thumbnail")); 
     Uri uri = Uri.fromFile(file); 
     holder.thumb.setImageURI(uri); 
     holder.artist.setText(songList.get(position).get("song_artist")); 
     holder.duration.setText(songList.get(position).get("song_duration")); 

     System.out.println(" title ** " + songList.get(position).get("song_title") + " duration ** " + songList.get(position).get("song_duration") 
       + " thumb ** " + songList.get(position).get("song_thumbnail") + " language ** " + songList.get(position).get("song_language")); 

     return rowView; 
    } 

    private class ViewHolder { 
     public ImageView thumb; 
     public TextView title, duration, artist; 
    } 
} 
+0

нужна помощь, пожалуйста, проверьте код один раз и дайте мне знать, где я делаю ошибку. .... срочно. Спасибо заранее. –

+0

Я получаю данные с сервера, но строка не раздувается ....! –

+0

Попробуйте использовать это: LayoutInflater inflater = (LayoutInflater) context.getSystemService (Context.LAYOUT_INFLATER_SERVICE); а также место: Просмотреть rowView = view; if (rowView == null) {rowView = inflater.inflate (R.layout.list_item_view, null)} –

Смежные вопросы