2016-10-24 1 views
0

현재 이미지를 listview에로드하려고합니다. 설정 방법은 이름 위치 등과 같은 객체의 모든 속성을 설정하는 중입니다. 그 중 하나가 이미지 일 수 있습니다. 현재 URL로 이동하는 메서드를 호출하는 이미지를 설정할 때마다 이미지를 검색하기 위해 토큰을 사용해야합니다. 일단 내가 가져온 이미지가 변수 비트 맵 이미지를 검색합니다.listview api에 이미지로드

이것은 매우 느리고 끔찍한 것처럼 보입니다. 일부 제 3자를 보았지만 직접 이미지 뷰에로드합니다. 이미지 뷰를 사용하기 위해 객체를 설정해야하며, 이미지를 재사용 할 필요가 있기 때문에 어떻게 든 이미지를 볼 필요가 있습니다.

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); 



} 

}

여기 http://g.recordit.co/gGlG99jWm9.gif

+0

당신은 피카소를 사용하거나 이미지 로더로 미끄러지 듯합니다. 이들은 멋진 라이브러리입니다. 나중에 사용하기 위해 비트 맵을 원한다고해도 비트 맵을 얻는 방법을 제공했습니다 –

+0

gif에 대한 링크가 403을 반환합니다. – LunaVulpo

답변

0

이 해방 Android-Universal-Image-Loader 시도 그것의 GIF입니다.

  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);