2016-10-24 4 views
0

В настоящее время я пытаюсь загрузить изображения в список. Способ, которым он настроен, я устанавливаю все свойства объекта, такие как местоположение имени и т. Д. Одним из них является изображение. В настоящее время каждый раз, когда я устанавливаю изображение, я вызываю метод, который идет на URL, я должен использовать маркеры для извлечения изображения. Как только я получаю, он устанавливает переменное изображение Bitmap на изображение, которое я только что получил.Загрузить изображения в listview api

Это супер медленно, и выглядит ужасно. Я посмотрел на некоторую третью сторону, но они напрямую загружаются в представление изображения, где мне нужно установить объект, чтобы иметь это изображение, также как-то нужно уцепиться, потому что я продолжаю его повторно использовать.

public class conversationsFragment extends Fragment { 
private String currentUserId; 
private ArrayAdapter namesArrayAdapter; 
//private ArrayList<String> names; 
//private ListView usersListView; 
private RecyclerView usersListView; 
String names[] = {"Anant Kharod, MD", "Mustafa Ahmed, MD"}; 
String msg[] = {"What time do you want to get started adding more stuff go over the line", "Presentation is tomorrow"}; 
boolean readUnread [] = {false,false}; 
public static int [] images={R.drawable.msgone,R.drawable.msgtwo}; 

ArrayList<MessageData> arrMessageData; //= new ArrayList<MessageData>(); 
//CustomAdapterConversations adapter; 
conversationRecyclerViewAdapter adapter; 
Bitmap image; 


public conversationsFragment() { 
    // Required empty public constructor 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    // Inflate the layout for this fragment 
    View rootView = inflater.inflate(R.layout.fragment_conversations, container, false); 
rootView.findViewById(R.id.conversationsListView); 
     usersListView = (RecyclerView) rootView.findViewById(R.id.conversationsListView); 




    callApi(); 


    return rootView; 

} 

private Handler handler = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
     switch (msg.what) { 
      case 1: 
       adapter = new conversationRecyclerViewAdapter(getActivity().getBaseContext(), arrMessageData); 
       usersListView.setAdapter(adapter); 
       LinearLayoutManager layoutManager 
         = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false); 
       usersListView.setLayoutManager(layoutManager); 
       break; 
      default: 
       Log.d("TAG", msg.what + " ? "); 
       break; 
     } 
    } 
}; 

private void callApi() { 
    String username, passowrd; 
    username = "user"; 
    passowrd = "passwd"; 
    //OkHttpClient client = new OkHttpClient.Builder().addNetworkInterceptor(new StethoInterceptor()).build(); 


    OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new BasicAuthInterceptor()).addNetworkInterceptor(new StethoInterceptor()).build(); 

    String credentials = "ezhu:[email protected]"; 
    String auth = "Basic " 
      + Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP); 

    Log.e("Test", auth); 


    //SharedPreferences preferences = this.getActivity().getSharedPreferences("token", Context.MODE_PRIVATE); 

    SharedPreferences settings = PreferenceManager 
      .getDefaultSharedPreferences(getActivity()); 
    String auth_token_string = settings.getString("token", ""/*default value*/); 
    String auth_token_type = settings.getString("tokenType", ""); 
    String userId = settings.getString("userId", ""); 

    Log.i("prefs", auth_token_type); 



    String url = "https://staging.vitalengine.com/portal-api/api/user/inbox/list?userId=" + 
      userId + 
      "&folderId=-1&tagId=0&page=1&itemPerPage=1000&showMsgInFolder=false"; 


    Request request = new Request.Builder().url(url) 
      .addHeader("Authorization", auth_token_type + " " + auth_token_string) 
      .addHeader("user-tz", "-330") 
        //.addHeader("Content-Type", "application/json") 
      .build(); 




    client.newCall(request).enqueue(new Callback() { 
     @Override 
     public void onFailure(Call call, IOException e) { 
      // Log.i(TAG, "call api error"); 
      Log.e("Volley", e.toString()); 
     } 

     @Override 
     public void onResponse(Call call, okhttp3.Response response) { 

      try { 
       if (!response.isSuccessful()) 
        throw new IOException("Unexpected code " + response); 
       final String body = response.body().string(); 

       //final String jsonData = response.body().string(); 
       JSONObject Jobject = new JSONObject(body); 




//JSONArray Jarray = Jobject.getJSONArray("inboxMsgList"); 
       JSONObject sub = Jobject.getJSONObject("response"); 
       JSONArray Jarray = sub.getJSONArray("inboxMsgList"); 

       //Log.e("Array", String.valueOf(Jarray.length())); 




       arrMessageData = new ArrayList<>(); 

       for (int i = 0; i < Jarray.length(); i++) { 
        JSONObject object = Jarray.getJSONObject(i); 

        if (object.get("messageType").equals("CONVERSATION")) { 

         //String time = object.get("conversationDate"); 

         Log.e("ConversationTest", object.getString("fromUser")); 

         MessageData msg3 = new MessageData(); 
         msg3.setName((String) object.get("fromUser")); 
         msg3.setMessage((String) object.get("message")); 
         getImage((String) object.get("photo")); 
         msg3.setImage(image); 
         msg3.setRead(true); 
         msg3.setSubject((String) object.get("subject")); 
         msg3.setType((String) object.get("conversationDate")); 
         msg3.setId((Integer) object.get("conversationId")); 

         arrMessageData.add(msg3); 
        } else { 
         //Log.e("DetailObject", object.getString("fromUser")); 
        } 


        //Log.e("DetailObject", object.getString("fromUser")); 
        //Log.e("DetailObject", msg3.getName()); 

        handler.sendEmptyMessage(1); 

       } 


       // Log.e("FullJsonReply", body.toString()); 
      } catch (Exception e) { 
       //Log.e("Volley2", e.toString()); 
      } 

     } 


    }); 
} 
public void getImage(String id) throws IOException { 

    String credentials = "ezhu:[email protected]"; 
    String auth = "Basic " 
      + Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP); 

    Log.e("Test", auth); 


    //SharedPreferences preferences = this.getActivity().getSharedPreferences("token", Context.MODE_PRIVATE); 

    SharedPreferences settings = PreferenceManager 
      .getDefaultSharedPreferences(getActivity()); 
    String auth_token_string = settings.getString("token", ""/*default value*/); 
    String auth_token_type = settings.getString("tokenType", ""); 
    String userId = settings.getString("userId", ""); 

    Log.i("prefs", auth_token_type); 




    URL imgurl = new URL("https://staging.vitalengine.com/portal-api/" + id); 
    URLConnection conn = imgurl.openConnection(); 
    conn.addRequestProperty("Authorization", auth_token_type + " "+ auth_token_string); 
    conn.connect(); 

    InputStream in = conn.getInputStream(); 

    Bitmap bmp = BitmapFactory.decodeStream(in); 



} 

}

Вот GIF его http://g.recordit.co/gGlG99jWm9.gif

+0

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

+0

вашей ссылки на gif return 403 – LunaVulpo

ответ

0

Попробуйте Lib Android-Universal-Image-Loader.

  1. И установлен как кешированный в памяти и член. Configuration Linked

  2. Использование:

ImageLoader imageLoader = ImageLoader.getInstance(); // Get singleton instance // Load image, decode it to Bitmap and display Bitmap in ImageView (or any other view // which implements ImageAware interface) imageLoader.displayImage(imageUri, imageView);