2013-05-23 5 views
2

이미지와 텍스트로 ListView을 만들었습니다. ListView에서 json 데이터을 구문 분석 할 수 있습니다. 하지만 내 요구 사항은로드 10 행 Json 데이터이며, 하단에는 로드가 더 있습니다. 사람이 JSON을하시기 바랍니다 사용하여 솔루션을 알고 있다면 다음 10를 얻기 위해, 등 등 여기 scroll에서 listView에서 더 많은 json 데이터를 추가하십시오.

  • 여기

    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; 
        } 
    } 
    
  • Adapter.java내 코드는 ... 저를 제안 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

내가 당신에게 당신의 ListView에 더 많은 부하를 통합하는 방법이 몇 가지 예제를 제공 여기에 귀하의 ListView에 추가 된 항목이 표시됩니다 adapter.setNotifysetchanged()을 설정

1.example

2.Costum Load more listview

+0

하나 있습니다 webservices 데이터로 loadmore listview를위한 샘플 애플리케이션을 제공하십시오. – Harsha

+0

@Harsha http://www.mysamplecode.com/2012/07/android-listview-load-more-data.html 이것을 확인하십시오. – kyogs

관련 문제