2012-07-08 334 views
4

我正在制作一个Android应用程序,它使用lazylist显示图像和文本。图像显示不正确

我从服务器获取来自json的数据。当我手动输入一些数据和图像路径到mysql数据库时,那些图像在应用程序中正确显示。

但是,当我从移动摄像头拍摄图像并上传该图像时,它会正确地将该路径插入到mysql数据库中,但它不会显示在我的应用程序中。

有人能告诉我为什么我有这个问题?我没有在我的logcat中发生错误。

有其他人有这个问题吗?如果是,那么你是如何解决它的?请帮帮我。


public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.home_list); 

    inboxList = new ArrayList<HashMap<String, String>>(); 

    List<String> profile_photo = new ArrayList<String>(); 
    List<String> userName = new ArrayList<String>(); 
    List<String> place = new ArrayList<String>(); 

    list=(ListView)findViewById(R.id.list); 
    //adapter=new LazyAdapter(this, tS, mTitles); 
    list.setAdapter(adapter); 

    /********************************/ 

    JSONObject json = userFunctions.homeData(); 

    Log.e("Data", json.toString()); 

    // Check your log cat for JSON reponse 
    // Log.d("Inbox JSON: ", json.toString()); 

    try { 
     data = json.getJSONArray("data"); 
     Log.d("inbox array: ", data.toString()); 
     // looping through All messages 
     for (int i = 0; i < data.length(); i++) { 
      JSONObject c = data.getJSONObject(i); 

      // Storing each json item in variable 
      String uid = c.getString("uid"); 
      String name = c.getString("name"); 
      String success = c.getString("success"); 
      String profile_img = c.getString("profile_photo"); 
      //String date = c.getString(TAG_DATE); 

      JSONObject places = c.getJSONObject(TAG_PLACES); 
      String place_photo = places.getString(TAG_PLACE_IMG); 

      Log.e("place_photo", place_photo); 
      // creating new HashMap 
      HashMap<String, String> map = new HashMap<String, String>(); 

      // adding each child node to HashMap key => value 
      map.put("uid", uid); 
      map.put("name", name); 
      map.put("success", success); 
      map.put("profile_image", profile_img); 

      profile_photo.add(profile_img); 
      userName.add(name); 
      place.add(place_photo); 
      // adding HashList to ArrayList 
      inboxList.add(map); 
     } 

     profile_image = new String[profile_photo.size()]; 
     user_name = new String[userName.size()]; 
     place_image = new String[(place.size())]; 

     profile_photo.toArray(profile_image); 
     userName.toArray(user_name); 
     place.toArray(place_image); 
     adapter = new LazyAdapter(this, profile_image, user_name, place_image); 
     list.setAdapter(adapter); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

    /*******************************/ 
} 

这是懒惰的适配器类

public class LazyAdapter extends BaseAdapter { 

private Activity activity; 
private String[] data; 
private String[] name; 
private String[] place_photo; 
private static LayoutInflater inflater=null; 
public ImageLoader imageLoader; 

public LazyAdapter(Activity a, String[] d, String[] username, String[] place_image) { 
    activity = a; 
    data = d; 
    name = username; 
    place_photo = place_image; 
    //Log.e("path", d.toString()); 
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    imageLoader=new ImageLoader(activity.getApplicationContext()); 
} 

public int getCount() { 
    return data.length; 
} 

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.home_list_item, null); 

    //TextView text=(TextView)vi.findViewById(R.id.text); 
    TextView title = (TextView)vi.findViewById(R.id.username); 
    ImageView image=(ImageView)vi.findViewById(R.id.image); 
    ImageView place=(ImageView)vi.findViewById(R.id.place); 
    //text.setText("item "+position); 
    title.setText(name[position]); 
    imageLoader.DisplayImage(data[position], image); 
    imageLoader.DisplayImage(place_photo[position], place); 
    return vi; 
} 
} 
+0

你能显示你的代码吗? – 2012-07-08 04:19:23

+0

@omidnazifi我在上面添加了几个文件。请检查它们 – 2619 2012-07-08 04:43:58

+0

设备重新启动后,此问题是否仍然存在?我的意思是你尝试,1.捕获相机图像,保存在分贝,重新启动设备,然后看看,如果图像正在显示或不 – jeet 2012-07-24 05:18:56

回答

1

但是,当我从手机摄像头的图像,并上传图片,但它插入正确的所有路径MySQL数据库,但它仍然没有显示在我的应用程序

新图像和旧图像的URL是否相同?

如果是这样,那么它可能是图像缓存的情况。 ImageLoader使用URL作为键缓存图像....清除应用程序数据后再试一次。

+0

@mohsin我将如何清除应用程序数据? – 2619 2012-07-08 06:17:37

+0

你可以手动清除它...(设置>应用程序> yourApp>清除缓存),但如果它解决了问题,那么你需要改变你的web服务,以便更新图像应该有不同的URL ... – 2012-07-08 06:33:15

+0

那么它有相同的网址,但不同的图像名称。我的意思是一个图片网址是'http:// example.com/appname/photos/useridfolder/image1.jpg',第二个图片网址是'http:// example.com/appname/photos/useridfolder/image2.jpg'。你认为它是同一个网址吗? – 2619 2012-07-08 06:43:56