2013-05-23 1 views
2

Я сделал один ListView с изображением и текстом. Я могу разобрать json data в ListView. Но мое требование состоит в том, чтобы загрузить 10 строк данных Json, а затем в нижней части есть загрузить больше., чтобы получить следующий 10, и т.д. и т.п. Предложите мне, если кто-нибудь знает решение, используя JSON, пожалуйста ...В прокрутке добавить еще данные json в listView

  • Вот мой код Adapter.java

    public class LazyAdapter extends BaseAdapter { 
    
        private Activity activity; 
        private ArrayList<HashMap<String, String>> data; 
        private static LayoutInflater inflater=null; 
        public ImageLoader imageLoader; 
    
        public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d) { 
         activity = a; 
         data=d; 
         inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
         imageLoader=new ImageLoader(activity.getApplicationContext()); 
        } 
    
        public int getCount() { 
         return data.size(); 
        } 
    
        public Object getItem(int position) { 
         return position; 
        } 
    
        public long getItemId(int position) { 
         return position; 
        } 
    
        public View getView(int position, View convertView, ViewGroup parent) { 
         View vi=convertView; 
         if(convertView==null) 
          vi = inflater.inflate(R.layout.list_row, null); 
    
         TextView title = (TextView)vi.findViewById(R.id.title); // title 
         TextView artist = (TextView)vi.findViewById(R.id.artist); // artist name 
         TextView duration = (TextView)vi.findViewById(R.id.duration); // duration 
         ImageView thumb_image=(ImageView)vi.findViewById(R.id.list_image); 
         ImageView thumb_image1=(ImageView)vi.findViewById(R.id.imageView1);// thumb image 
    
         HashMap<String, String> song = new HashMap<String, String>(); 
         song = data.get(position); 
    
         // Setting all values in listview 
         title.setText(song.get(CustomizedListView.USER_NAME)); 
         artist.setText(song.get(CustomizedListView.KEY_ARTIST)); 
         duration.setText(song.get(CustomizedListView.KEY_DURATION)); 
         imageLoader.DisplayImage(song.get(CustomizedListView.KEY_THUMB_URL), thumb_image); 
    
         imageLoader.DisplayImage(song.get(CustomizedListView.KEY_THUMB_URL1), thumb_image1); 
         return vi; 
        } 
    } 
    
  • Здесь это код MainActivity.java

    public class CustomizedListView extends Activity { 
        // All static variables 
        static final String URL = XXXX.json; 
        //private static String URL; 
        // XML node keys 
        static final String KEY_SONG = "review_full"; // parent node 
        static final String KEY_ID = "activity_id"; 
        static final String USER_NAME = "user_name"; 
        static final String KEY_ARTIST = "review_small"; 
        static final String KEY_DURATION = "time"; 
        static final String KEY_THUMB_URL = "thumb"; 
        static final String KEY_THUMB_URL1 = "photo"; 
        String type; 
        String user_name1; 
        String thumbnail; 
        String subscriber_name; 
        String review_full; 
        String status; 
        String photo; 
        ListView list; 
        String review_small; 
        LazyAdapter adapter; 
    
    
        String[] image; 
        ArrayList<HashMap<String, String>> songsList; 
        public String image1=null; 
    
        @Override 
        public void onCreate(Bundle savedInstanceState) { 
    
         super.onCreate(savedInstanceState); 
         setContentView(R.layout.main); 
    
         //Intent intent1 = getIntent(); 
         //String easyPuzzle = intent1.getExtras().getString("Id"); 
         //URL=URL0+easyPuzzle; 
         songsList = new ArrayList<HashMap<String, String>>(); 
         JSONParser jParser = new JSONParser(); 
         JSONObject json = jParser.getJSONFromUrl(URL); 
    
    
         try{ 
          Log.d("Parsing JSON Data", "Before json1 try2"); 
          JSONArray activities = json.getJSONArray("activities"); 
          Log.d("Parsing JSON Data", "after activiti"); 
    
          for (int i = 0; i < activities.length(); i++) { 
           JSONObject c = activities.getJSONObject(i); 
           image=new String[2]; 
           Log.d("Parsing JSON Data", "inside for loop"); 
           HashMap<String, String> map = new HashMap<String, String>(); 
    
           //checking type content 
           type=c.getString("type"); 
    
           if(type.contains("user")){ 
            user_name1=c.getString(USER_NAME); 
            thumbnail=c.getString(KEY_THUMB_URL); 
            map.put(KEY_THUMB_URL, thumbnail); 
    
            map.put(USER_NAME, user_name1+" "+"joined etable community"); 
            map.put(KEY_DURATION, c.getString(KEY_DURATION)); 
            // map.put(KEY_ARTIST,null); 
    
           }else if(type.contains("checkin")){ 
            user_name1=c.getString(USER_NAME); 
            subscriber_name=c.getString("subscriber_name"); 
            thumbnail=c.getString(KEY_THUMB_URL); 
            photo=c.getString("photo"); 
    
            if(photo.contains("False")){ 
             image1="False"; 
             map.put(KEY_THUMB_URL1, image1); 
            }else{ 
    
             image = photo.split("image="); 
             image1=image[1]; 
             map.put(KEY_THUMB_URL1, image1); 
    
            } 
    
            map.put(KEY_THUMB_URL, thumbnail); 
            map.put(USER_NAME, user_name1+" "+"was spotted at"+" "+subscriber_name); 
            map.put(KEY_DURATION, c.getString(KEY_DURATION)); 
            // map.put(KEY_ARTIST,null); 
    
           }else if(type.contains("favorite")){ 
            subscriber_name=c.getString("subscriber_name"); 
            user_name1=c.getString(USER_NAME); 
            thumbnail=c.getString(KEY_THUMB_URL); 
    
            map.put(KEY_THUMB_URL, thumbnail); 
            map.put(USER_NAME, user_name1+" "+"favorited"+" "+subscriber_name); 
            map.put(KEY_DURATION, c.getString(KEY_DURATION)); 
            //map.put(KEY_ARTIST,null); 
    
           }else if(type.contains("review")){ 
            subscriber_name=c.getString("subscriber_name"); 
            user_name1=c.getString(USER_NAME); 
            review_small=c.getString("review_small"); 
            review_full=c.getString("review_full"); 
    
            thumbnail=c.getString(KEY_THUMB_URL); 
            map.put(KEY_THUMB_URL, thumbnail); 
            map.put(USER_NAME, user_name1+" "+"wrote a review for"+" "+subscriber_name); 
            map.put(KEY_DURATION, c.getString(KEY_DURATION)); 
            map.put(KEY_ARTIST,review_small); 
            map.put(KEY_SONG,review_full); 
    
           }else if(type.contains("status")){ 
            user_name1=c.getString(USER_NAME); 
            status=c.getString("full_status"); 
    
            thumbnail=c.getString(KEY_THUMB_URL); 
            map.put(KEY_THUMB_URL, thumbnail); 
            map.put(USER_NAME, user_name1+" "+"says\n"+" "+status); 
            map.put(KEY_DURATION, c.getString(KEY_DURATION)); 
            //map.put(KEY_ARTIST,null); 
    
           }else{ 
            user_name1=c.getString(USER_NAME); 
            map.put(USER_NAME, user_name1+" "+"some problem"); 
            //map.put(KEY_ARTIST,null); 
           } 
    
           // adding HashList to ArrayList 
           songsList.add(map); 
    
          }}catch (JSONException e) { 
          e.printStackTrace(); 
         } 
    
         list=(ListView)findViewById(R.id.list); 
    
         // Getting adapter by passing xml data ArrayList 
         adapter=new LazyAdapter(this, songsList); 
         list.setAdapter(adapter); 
         list.invalidateViews(); 
    
         // Click event for single list row 
         list.setOnItemClickListener(new OnItemClickListener() { 
    
          @Override 
          public void onItemClick(AdapterView<?> parent, View view, 
                int position, long id) { 
           list.invalidateViews(); 
           Log.d("Parsing JSON Data", "start click"); 
           HashMap<String, String> map = songsList.get(position); 
    
           Intent in = new Intent(CustomizedListView.this, LargeView.class); 
           in.putExtra("text", map.get(USER_NAME)); 
           in.putExtra("image", map.get(KEY_THUMB_URL)); 
           in.putExtra("review", map.get(KEY_SONG)); 
    
           Log.d("Parsing JSON Data", "inside profile33"); 
    
           startActivity(in); 
           Log.d("Parsing JSON Data", USER_NAME); 
    
          } 
         }); 
        } 
    
    } 
    

ответ

2

Настройка вашего adapter.setNotifysetchanged() будет отображать добавленные элементы в вашей ListView Здесь я дать вам пример того, что, как интегрировать нагрузку более с ListView

1.example

2.Costum Load more listview

+0

любой может дайте примерное приложение для loadmore listview с данными webservices – Harsha

+0

@Harsha http://www.mysamplecode.com/2012/07/android-listview-load-more-data.html проверьте это. – kyogs

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