2016-07-25 28 views
0

In einer Ansicht Liste öffnet i Image, Text und Bild enthält Standardbild, wenn die Liste Last mit Download abgeschlossen, alles funktioniert gut, aber wenn Tastatur öffnet die heruntergeladene Bild Änderung Standardbild. public class ChatScreen erweitert Aktivität implementiert OnClickListener {Listenansicht Wechsel auf Standard wenn Tastatur

private void stopTimer() 
    { 
     if (mTimer1 != null) 
     { 
      mTimer1.cancel(); 
      mTimer1.purge(); 
     } 
    } 

    private void startTimer() 
    { 
     mTimer1 = new Timer(); 

     mTt1 = new TimerTask() 
     { 
      public void run() 
      { 
       mTimerHandler.post(new Runnable() 
       { 
        public void run() 
        { 
         try 
         { 
          Date date1 = getDate(time); 

          Date date2 = getDate(getCurrentTime()); 

          if (date2.getTime() - date1.getTime() == 5000) 
          { 
           stopTimer(); 
           try 
           { 
            chat.setCurrentState(ChatState.paused, 
              chatWithJID, FromChatJID); 
           } catch (XMPPException e) 
           { 
            e.printStackTrace(); 
           } 

           isTyping = false; 
          } 
          else if (date2.getTime() - date1.getTime() > 30000) 
          { 
           time = getCurrentTime(); 
           try 
           { 
            chat.setCurrentState(ChatState.gone, 
              chatWithJID, FromChatJID); 
           } catch (XMPPException e) 
           { 
            e.printStackTrace(); 
           } 

           isTyping = false; 
          } 
         } 
         catch (ParseException e) 
         { 
          e.printStackTrace(); 
         } 
         catch(IllegalStateException e) 
         { 
          e.printStackTrace(); 
         } 
        } 
       }); 
      } 
     }; 

     mTimer1.schedule(mTt1, 00, 5000); 
    } 

    @Override 
    protected void onPause() 
    { 
     super.onPause(); 

     chat.setChatFragment(null); 

     System.out.println("onPasue called"); 
    } 
    } 
    } 
    } 
    } 
    } 

    @Override 
    protected void onResume() 
    { 
     super.onResume(); 

     session.saveCurrentName(this.getLocalClassName()); 

     chat.setChatFragment(ctx); 

     System.out.println("onResume called"); 

     if(checkForCurfew()) 
      showHideView(true, 0); 
     else 
      showHideView(false, 0); 
    } 

    public void showHideView(final boolean value, final int type) 
    { 
     System.out.println("Called"); 

     runOnUiThread(new Runnable() 
     { 
      @Override 
      public void run() 
      { 
       if(value) 
       { 
        btnSend.setEnabled(value); 
        btnSend.setAlpha(1.0f); 

        inputMessage.setEnabled(value); 

        btnSticker.setEnabled(value); 
        btnSticker.setAlpha(1.0f); 

        btnPicture.setEnabled(value); 
        btnPicture.setAlpha(1.0f); 

        doodle_btn.setEnabled(value); 
        doodle_btn.setAlpha(1.0f); 
       } 
       else 
       { 
        btnSend.setEnabled(value); 
        btnSend.setAlpha(0.5f); 

        inputMessage.setEnabled(value); 

        btnSticker.setEnabled(value); 
        btnSticker.setAlpha(0.5f); 

        btnPicture.setEnabled(value); 
        btnPicture.setAlpha(0.5f); 

        doodle_btn.setEnabled(value); 
        doodle_btn.setAlpha(0.5f); 
       } 

       if(!value && type == 0) 
        inputMessage.setHint("You can't chat during a curfew"); 
       else if(!value && type == 1) 
        inputMessage.setHint("Can’t Access Internet"); 
       else 
        inputMessage.setHint("Enter message here"); 
      } 
     }); 
    } 

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

     System.gc(); 

     setContentView(R.layout.activity_fragment_chat); 

     System.out.println("Chat screen called."); 

     mcon = ChatScreen.this; 

     chat = ((RooChat) getApplication()).chat; 

     Bundle bundle = getIntent().getBundleExtra("bundle_data"); 

     System.out.println("bundle- " + bundle); 

     chatWithJID = bundle.getString("chat_with"); 

     chatWithName = bundle.getString("kid_name"); 

     FromChatJID = bundle.getString("chat_from"); 

     ChatRoomName = bundle.getString("chat_room"); 

     indexOfChatRoom = Integer.parseInt(bundle.getString("index")); 

     CopyindexOfChatRoom = indexOfChatRoom; 

     typeFaceCurseCasual = AppFonts.getFont(mcon, AppFonts.CurseCasual); 

     typeFaceARLRDBDHand = AppFonts.getFont(mcon, AppFonts.ARLRDBDHand); 

     back = (Button) findViewById(R.id.back); 

     sendBtn=(Button)findViewById(R.id.send); 
     sendBtn.setOnClickListener(this); 

     erasebtn=(Button)findViewById(R.id.erase); 
     erasebtn.setOnClickListener(this); 

     smallers=(Button)findViewById(R.id.small_ers1); 
     smallers.setOnClickListener(this); 

     mediumers=(Button)findViewById(R.id.medium_ers1); 
     mediumers.setOnClickListener(this); 

     largeers=(Button)findViewById(R.id.large_ers1); 
     largeers.setOnClickListener(this); 

     smallline=(Button)findViewById(R.id.small); 
     smallline.setOnClickListener(this); 

     mediumline=(Button)findViewById(R.id.medium); 
     mediumline.setOnClickListener(this); 

     largeline=(Button)findViewById(R.id.large); 
     largeline.setOnClickListener(this); 

     back1=(Button)findViewById(R.id.back1); 
     back1.setOnClickListener(this); 

     drawView=(DrawingView)findViewById(R.id.Drawing); 

     doodle_btn=(Button)findViewById(R.id.doodle_btn); 
     doodle_btn.setOnClickListener(this); 
     doodle=(LinearLayout) findViewById(R.id.doodle); 


     back.setOnClickListener(this); 

     init(); 

     String available = convertAvailability(chat.getUserAvailability(chatWithJID)); 


     if (chatWithName.equalsIgnoreCase("echo") || chatWithName.equalsIgnoreCase("puzzle") 
       || chatWithName.equalsIgnoreCase("msr")) 
     { 
      image.setImageResource(R.drawable.status_active); 
     } 
     else if (available.equalsIgnoreCase("offline")) 
     { 
      chat.sendIQForLastSeen(chatWithJID); 
      image.setImageResource(R.drawable.status_offline); 
     } 
     else 
     { 
      // chatState.setText(available); 
      image.setImageResource(R.drawable.status_active); 
     } 

     inputMessage.addTextChangedListener(new TextWatcher() 
     { 
      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) 
      { 
       if (chat.isConnected()) 
       { 
        try 
        { 
         time = getCurrentTime(); 
        } 
        catch (ParseException e1) 
        { 
         e1.printStackTrace(); 
        } 
        if (isTyping == false) 
        { 
         try 
         { 
          chat.setCurrentState(ChatState.composing, chatWithJID, FromChatJID); 
          isTyping = true; 

          startTimer(); 
         } 
         catch (XMPPException e) 
         { 
          e.printStackTrace(); 
         } 
        } 
        else if (isTyping == true) 
        { 
         stopTimer(); 
         startTimer(); 
        } 
       } 
       /*else 
        Toast.makeText(getApplicationContext(), "Please wait, connecting to server.", 0).show(); 
       */ 
      } 

      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) 
      {  
      }  
      @Override 
      public void afterTextChanged(Editable s) 
      {  
      } 
     });  
     inputMessage.setOnFocusChangeListener(new OnFocusChangeListener() 
     { 
      @Override 
      public void onFocusChange(final View v, final boolean hasFocus) 
      { 
       if (hasFocus && inputMessage.isEnabled() && inputMessage.isFocusable()) 
        new Runnable() 
       { 
        @Override 
        public void run() 
        { 
         final InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
         imm.showSoftInput(inputMessage, InputMethodManager.SHOW_IMPLICIT);       
        } 
       }; 
      } 
     }); 
     data = session.getUserDetails();  
     banned = session.getBannedWord();  
     System.out.println(banned);  
     JSONArray jsonArray; 
     if(!banned.equals("")) 
     { 
      try 
      { 
       jsonArray = new JSONArray(banned);  
       strArr = new String[jsonArray.length()];  
       for (int i = 0; i < jsonArray.length(); i++) 
       { 
        strArr[i] = jsonArray.getString(i); 
       }  
       //System.out.println(Arrays.toString(strArr)); 
      } 
      catch (JSONException e) 
      { 
       e.printStackTrace(); 
      } 
     }  
    } 
    }  
    public void reFreshData() 
    { 
     indexOfChatRoom = db.getChatRoomIndex(chatWithName);  
     messages = db.getFriendChat(indexOfChatRoom);  
     adapter = new ChatMessageAdapter(mcon, messages);  
     chatList.setAdapter(adapter); 
    }  
    private void init() 
    { 
     db = new DatabaseHelper(mcon);  
     ctx = this;  
     chat.setChatFragment(ctx);  
     session = new SessionManager(mcon);  
     chatList = (ListView) findViewById(R.id.chatList);  
     chatWith = (TextView) findViewById(R.id.chat_with);   
     doodle_txt = (TextView) findViewById(R.id.doodle_txt);   
     chatState = (TextView) findViewById(R.id.chat_status);  
     btnPicture = (TextView) findViewById(R.id.picture);  
     btnPicture.setOnClickListener(this);  
     btnSticker = (TextView) findViewById(R.id.sticker);  
     btnSticker.setOnClickListener(this);  
     btnExtra = (TextView) findViewById(R.id.extra);  
     btnExtra.setOnClickListener(this);  
     btnSend = (TextView) findViewById(R.id.btn_send);  
     btnSend.setTypeface(typeFaceARLRDBDHand, Typeface.BOLD);  
     btnSend.setOnClickListener(this);  
     inputMessage = (EditText) findViewById(R.id.et_message);  
     inputMessage.setTypeface(typeFaceCurseCasual);  
     chatWith.setText(chatWithName);  
     image = (ImageView) findViewById(R.id.img_chat_status);  
     cross = (ImageView) findViewById(R.id.cross);  
     cross.setOnClickListener(this);    
     lay_sticker_main = (LinearLayout) findViewById(R.id.lay_sticker_main);  
     lay_sticker_child = (FlowLayout) findViewById(R.id.lay_sticker_child); 
     lay_sticker_group = (FlowLayout) findViewById(R.id.lay_sticker_group);  
     reFreshData();      
     chatList.setOnItemClickListener(new OnItemClickListener() {  
       @Override 
       public void onItemClick(AdapterView<?> arg0, final View arg1, final int arg2, 
       long arg3) { 
       // TODO Auto-generated method stub     
       final ChatMessage msg=adapter.getItem(arg2);     
       final ImageView btn = (ImageView) arg1.findViewById(R.id.textView1);     
       final ImageView imgone = (ImageView)arg1.findViewById(R.id.imagev); 
       try{ 
       if(!btn.getTag().toString().equals("")){      
        Log.v("","msg getting:..."+btn.getTag().toString());       
        DownloadImage di=new DownloadImage(ChatScreen.this, btn.getTag().toString(), new BitmapAsyncTaskCompleteListener() {       
         @Override 
         public void onTaskComplete(Bitmap result) { 
          // TODO Auto-generated method stub 
           Log.v("Img :",""+result); 
           imgone.setImageBitmap(result); 
           String filePath=saveImage(result,msg.getId(),msg.getFrom()); 
           btn.setVisibility(View.GONE); 
           btn.setTag(filePath);          
           final int index = chatList.getFirstVisiblePosition(); 
           View v = chatList.getChildAt(0); 
           final int top = (v == null) ? 0 : v.getTop();           
           Log.v("", "top :.."+top); 
           chatList.post(new Runnable() { 
            @Override 
            public void run() { 
             chatList.setSelectionFromTop(index,top); 
            }          
           });          
         } 
         }); 
         di.execute();  
       } 
       } 
       catch(Exception ex){ 
       btn.setVisibility(View.GONE); 
        btn.setTag(""); 
       } 
       } 
       }); 
     handler = new Handler(Looper.getMainLooper()) 
     { 
      @Override 
      public void handleMessage(Message msg) 
      { 
       super.handleMessage(msg);  
       switch (msg.what) 
       { 
       case REFRESH_CHAT_LIST: 
        adapter.notifyDataSetChanged(); 
        break; 
       case REFRESH_CHAT_STATUS: 
        if(text != null) 
        { 
         try 
         { 
          if (isNumeric(text)) 
          { 
           chatState.setText(calculateTime(Long.parseLong(text))); 
           image.setImageResource(R.drawable.status_offline); 
          }       
          else 
          { 
           chatState.setText(text);  
           if (chatWithName.equalsIgnoreCase("echo") 
             || chatWithName.equalsIgnoreCase("puzzle") 
             || chatWithName.equalsIgnoreCase("msr")) { 
            image.setImageResource(R.drawable.status_active); 
           } else if (text.equalsIgnoreCase("offline")) { 
            chat.sendIQForLastSeen(chatWithJID); 
            image.setImageResource(R.drawable.status_offline); 
           } else { 
            image.setImageResource(R.drawable.status_active); 
           } 
          } 
         } 
         catch(NumberFormatException e) 
         { 
          image.setImageResource(R.drawable.status_offline); 
          e.printStackTrace(); 
         } 
        } 
        break; 
       case REFRESH_MESSAGE_DELIVERY: 
        adapter.notifyDataSetChanged();     
        break;  
       default: 
        break; 
       } 
      } 
     }; 
    }String filePath =""; 
    private String saveImage(Bitmap finalBitmap,int chatWith,String from) { 
     String fileName = chat.getCurrentDateTime();    
     //msg = "You got a photo. Display of photo will be added in next version of this app.";  
     final File dir = new File(Environment.getExternalStorageDirectory() 
       .getAbsolutePath(), "/roo_kids/images/" + from + "/");  
     if (!dir.exists()) 
     { 
      dir.mkdirs(); 
     }  
     final File myFile = new File(dir, fileName + ".png");  
     if (!myFile.exists()) 
     { 
      try 
      { 
       myFile.createNewFile(); 
      } 
      catch (IOException e) 
      { 
       e.printStackTrace(); 
      } 
     }  
     try { 
       FileOutputStream out = new FileOutputStream(myFile); 
       finalBitmap.compress(Bitmap.CompressFormat.PNG, 90, out); 
       out.flush(); 
       out.close();  
      } catch (Exception e) { 
       e.printStackTrace(); 
      }  
     filePath= myFile.getAbsolutePath()+"::images::";    
     Log.v("","filePath after decoding:.."+filePath);   
     Log.v("","chatWith Id after decoding:.."+chatWith);   
     Log.v("","from after decoding:.."+from);    
     db.updateFriendChat(chatWith,filePath);   
     return filePath; 
     }  
    public void getAllFiles(String directoryName) 
    { 
    }  
    public boolean isFileExist(String directoryName, String filename) 
    {  
    }  
    @Override 
    public void onClick(View v) 
    { 
     switch (v.getId()) 
      { 
      case R.id.picture: 
      openGallery(); 
      break;   
      case R.id.extra: 
      break;   
      case R.id.btn_send: 
      sendMessageAndValidate(); 
      break; 
      case R.id.back:   
      onBackPressed(); 
      break; 
      default: 
      break; 
     }   
    }  
    private void openGallery() 
    { 
     Intent intent = new Intent();  
     intent.setType("image/*");  
     intent.setAction(Intent.ACTION_GET_CONTENT);  
     intent.addCategory(Intent.CATEGORY_OPENABLE);  
     //intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);  
     startActivityForResult(intent, SELECT_PICTURE); 
    }  
    private String encodeFileToBase64Binary(String path)throws IOException, FileNotFoundException 
    { 
    }  
    String cond=""; 
    public class ExecuteImageSharingProcess extends AsyncTask<String, Integer, String> 
    { 
     String base64 = "";  
     ProgressDialog pd = null;  
     @Override 
     protected void onPreExecute() 
     { 
      super.onPreExecute();  
      pd = new ProgressDialog(ChatScreen.this); 
      pd.setCancelable(false); 
      pd.setMessage("Please wait.."); 
      pd.show(); 
     }  
     @Override 
     protected String doInBackground(String... params) 
     {    
      try 
      { 
       //base64 = encodeFileToBase64Binary(params[0]); 
       Log.v("", "params[0].."+params[0]);     
       byte[] data = params[0].getBytes("UTF-8");     
       base64= new String(data);     
       Log.v("", "base64.."+base64); 
       return "yes";  
      } 
      catch (IOException e) 
      { 
       e.printStackTrace(); 
       return "no"; 
      } 
      catch(NullPointerException e) 
      { 
       return "no"; 
      }    
     } 
     @Override 
     protected void onPostExecute(String result) 
     { 
      super.onPostExecute(result);  
      if(result.equals("yes")) 
      { 
       if(chat.isConnected()) 
       { 
        String prefix = chat.generateRandomChar()+"imagePrefixEnd";  
        System.out.println("prefix-> "+prefix);  
        ctx.moveMessagetoXMPP(prefix + base64 + "::images::", 1);  
        base64 = "";  
        bitmap = null; 
       } 
      } 
      else 
      { 
       Toast.makeText(ctx, "File not found.", Toast.LENGTH_LONG).show(); 
      } 
      try 
      { 
       if ((this.pd != null) && this.pd.isShowing()) 
       { 
        this.pd.dismiss(); 
       } 
      } catch (final IllegalArgumentException e) 
      {  
      } catch (final Exception e) 
      {  
      } finally 
      { 
       this.pd = null; 
      } 
     } 
    }  
    String imgDecodableString = null; 
    String imgbase64=""; 
    AlertManager alert_dialog;  
    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent i) 
    { 
     super.onActivityResult(requestCode, resultCode, i);  
     try 
     { 
      if (requestCode == SELECT_PICTURE && resultCode == RESULT_OK && null != data) 
      { 
        String urlofimage=""; // here i send base64 image to server and it will returns url of image that is send in ExecuteImageSharingProcess method. 
        new ExecuteImageSharingProcess().execute(urlofimage);     
        } 
       });     
       ucIA.execute(); 
       }     
      } 
      else if (resultCode == Activity.RESULT_CANCELED) 
      { 
       bitmap = null; 
      } 
     } catch (Exception e) 
     { 
      Toast.makeText(this, "Something went wrong", Toast.LENGTH_LONG).show(); 
     } 
    } 
    private void sendMessageAndValidate() 
    { 
     String msg=inputMessage.getText().toString().replace(" ","");   
     String msgone=msg.replace("\n", ""); 
     if (msgone.length() > 0) 
     { 
      if (chat.isConnected()) 
      {    
       ctx.moveMessagetoXMPP(inputMessage.getText().toString(), 0);  
       inputMessage.setText("");  
       stopTimer(); 
      } 
     }  
    }  
    String thread=""; 
    protected void moveMessagetoXMPP(String msg, final int type) 
    {  
     data = session.getUserDetails();  
     if (checkChatRoomAvailablity(chatWithName)) 
     { 
     thread = db.getThreadFromChatroom(chatWithName); 
     }  
     if (thread.equals("")) 
     thread = ChatRoomName; 
     chat.sendMesage(indexOfChatRoom, msg, FromChatJID, chatWithJID, thread, type);   
     try 
     { 
     chat.setCurrentState(ChatState.paused, chatWithJID, FromChatJID);  
     } 
     catch (XMPPException e) 
     { 
     e.printStackTrace(); 
     } 
    }  
    public class MyThread implements Runnable 
    { 
     String message; 
     File file;  
     public MyThread(String message, File file) 
     { 
      this.message = message; 
      this.file = file; 
     }  
     @Override 
     public void run() 
     { 
      String fileName; 
      if(message.contains("::images::")) 
       fileName = saveFile(decodeBase64(message.substring(message.indexOf("imagePrefixEnd")+14, message.indexOf("::images::"))), file); 
      else 
       fileName = saveFile(decodeBase64(message.substring(message.indexOf("imagePrefixEnd")+14, message.indexOf("::doodle::"))), file); 
     }  
    }  
    public void appendMessageInListView(long _id) 
    { 
     if (messages.size() > 0) 
     { 
      System.out.println(messages.get(messages.size() - 1).getId());  
      ChatMessage cm = db.getFriendChatMessage(indexOfChatRoom, ""+ messages.get(messages.size() - 1).getId());  
      messages.add(messages.size(), cm); 
     } 
     else 
     { 
      ChatMessage cm = db.getFriendChatMessage(indexOfChatRoom, "" + _id);  
      messages.add(messages.size(), cm); 
     }  
     refreshChatList(); 
    }  
    public void refreshChatList() 
    { 
     int state = REFRESH_CHAT_LIST;  
     Message msg = handler.obtainMessage(state);  
     msg.sendToTarget(); 
    }   
    public void refreshChatStatus() { 
     int state = REFRESH_CHAT_STATUS;  
     Message msg = handler.obtainMessage(state);  
     msg.sendToTarget(); 
    }  
    public int getChatIndex2(String participant) { 
     return db.getChatRoomIndex(participant); 
    }  
    ImageView img; 
    View oldview; 
    public class ChatMessageAdapter extends BaseAdapter 
    { 
     public ArrayList<ChatMessage> messages;  
     private Context ctx;  
     public ChatMessageAdapter(Context ctx, ArrayList<ChatMessage> messages) 
     { 
      this.ctx = ctx; 

      this.messages = messages; 
     }  
     @Override 
     public int getCount() 
     { 
      return messages.size(); 
     }  
     @Override 
     public long getItemId(int arg0) 
     { 
      return arg0; 
     }  
     @Override 
     public View getView(int position, View oldView, ViewGroup parent) 
     { 
      if (ctx == null) 
       return oldView;  
      final ChatMessage msg = getItem(position);    
      if (oldView == null || (((Integer) oldView.getTag()) != msg.getIsOutgoing())) 
      { 
       LayoutInflater inflater = (LayoutInflater) getLayoutInflater(); 

       if (msg.getIsOutgoing() == MyMessage.OUTGOING_ITEM) 
       { 
        oldView = inflater.inflate(R.layout.fragment_message_outgoing_item, null);  
        oldView.setTag(MyMessage.OUTGOING_ITEM); 
       } 
       else 
       { 
        oldView = inflater.inflate(R.layout.fragment_message_ingoing_item, null);  
        oldView.setTag(MyMessage.INGOING_ITEM); 
       } 
      }  
      TextView message = (TextView) oldView.findViewById(R.id.msg);  
     message.setTypeface(typeFaceCurseCasual);  
      LinearLayout lay_txt = (LinearLayout) oldView.findViewById(R.id.lay_txt);  
      LinearLayout lay_img = (LinearLayout) oldView.findViewById(R.id.lay_img);  
      img = (ImageView) oldView.findViewById(R.id.imagev);     
      FrameLayout fmlay=(FrameLayout) oldView.findViewById(R.id.fmlay);  
      ImageView textView1 = (ImageView) oldView.findViewById(R.id.textView1);    
      ImageView imgSticker = (ImageView) oldView.findViewById(R.id.img_sticker);  
      ImageView tickSent = (ImageView) oldView.findViewById(R.id.tickSent);  
      ImageView tickDeliver = (ImageView) oldView.findViewById(R.id.tickDeliver);  
      TextView timestamp = (TextView) oldView.findViewById(R.id.timestamp);  
      oldview=oldView;    
      timestamp.setTypeface(typeFaceCurseCasual);  
      message.setText(msg.getMessage()); 
      System.out.println("message in adapter");  
      if (msg.getIsOutgoing() == MyMessage.OUTGOING_ITEM) 
       tickSent.setVisibility(View.VISIBLE); 
      else 
       tickSent.setVisibility(View.INVISIBLE);  
      if (msg.getIsDeliver() == true) 
       tickDeliver.setVisibility(View.VISIBLE); 
      else 
       tickDeliver.setVisibility(View.INVISIBLE);  
      if(msg.getTimeStamp()!= null)     timestamp.setText(getTimeAgo(Long.parseLong(msg.getTimeStamp()),ctx));    
      if(msg.getMessage()!= null) 
      { 
       if(msg.getMessage().contains("::sticker::")) 
       { 
        lay_img.setVisibility(View.GONE);  
        lay_txt.setVisibility(View.GONE);  
        imgSticker.setVisibility(View.VISIBLE);  
        String Dir = msg.getMessage().substring(2, msg.getMessage().indexOf("-"));  
        String file = msg.getMessage().substring(2, msg.getMessage().indexOf("}}"));  
        if(isFileExist(Dir, file)) 
        { 
         String path = ctx.getFilesDir() + "/booksFolder/"+Dir+"/"+file;  
         System.out.println("path- "+ path);  
         Uri imgUri = Uri.parse("file://"+path);  
         imgSticker.setImageURI(imgUri); 
        } 
        else 
        { 
         String url = "http://s3.amazonaws.com/rk-s-0ae8740/a/"+file;  
         System.out.println(url);  
         new ImageLoaderWithImageview(mcon).DisplayImage(url, imgSticker); 
        } 
       } 
       else if(!msg.getMessage().contains("::images::") && !msg.getMessage().contains("::doodle::")) 
       { 
        System.out.println("in text condition"); 
        lay_img.setVisibility(View.GONE);  
        imgSticker.setVisibility(View.GONE); 
        lay_txt.setVisibility(View.VISIBLE); 
        System.out.println("msg coming :"+msg.getMessage());       
        message.setText(msg.getMessage()); 
       } 
       else 
       { 
        lay_txt.setVisibility(View.GONE);  
        imgSticker.setVisibility(View.GONE);  
        lay_img.setVisibility(View.VISIBLE);        
        if (msg.getIsOutgoing() == MyMessage.INGOING_ITEM) 
        { 
         fmlay.setVisibility(View.VISIBLE); 
        }       
        Log.v("","msg getting:..."+msg.getMessage()); 
        String pathOne = null ;      
         if(msg.getMessage().contains("imagePrefixEnd")){  
          Log.v("In images/doddle if", "askfk"); 

          pathOne="default"; 
          textView1.setVisibility(View.VISIBLE); 
          String imgpath=setdefaultImage(msg.getMessage()); 
          textView1.setTag(imgpath); 
         } 
         else {       
          Log.v("In images else", "askfk");      
          try{ 
           pathOne = msg.getMessage().substring(0, msg.getMessage().indexOf("::images::")); 
          } 
          catch(Exception ex){ 
           pathOne = msg.getMessage().substring(0, msg.getMessage().indexOf("::doodle::"));          
          } 
          textView1.setVisibility(View.GONE); 
          Bitmap bitmap=setImage(pathOne); 
          img.setImageBitmap(bitmap); 
          textView1.setTag(""); 
         }      
        }                
      }   
      return oldview; 
     }  
     @Override 
     public ChatMessage getItem(int position) 
     { 
      return messages.get(position); 
     } 
    } 
public String setdefaultImage(String msg){ 
    Bitmap bImage = BitmapFactory.decodeResource(ChatScreen.this.getResources(), R.drawable.dummyimage); 
    img.setImageBitmap(bImage);  
    String urlpath=""; 
    try{ 
    urlpath = msg.substring(0, msg.indexOf("::images::")); 
    } 
    catch(Exception ex){ 
     urlpath = msg.substring(0, msg.indexOf("::doodle::")); 
    } 
    //Log.v("","msg getting:..."+urlpath);   
    String pt[]=urlpath.split("PrefixEnd");      
    //System.out.println("path :"+pt[1]); 
    return pt[1];  
}  
public Bitmap setImage(String pathOne){ 
    Bitmap bitmap=null; 
    File imgFile = new File(pathOne); 
    //Log.v("","msg image path:..."+pathOne); 
    if(imgFile.exists()) 
    { 
     //Log.v("","msg path exits:..."); 
     BitmapFactory.Options options = new BitmapFactory.Options(); 
     options.inSampleSize = 3; 
     bitmap= BitmapFactory.decodeFile(pathOne, options); 
    } 
    else{  
    } 
    return bitmap; 
}  
} 
+1

teilen Sie Ihren Quellcode – ddb

+0

Ich kann meinen Code nicht teilen. – Nisha

+0

Ich benutze BaseAdapter für die Einstellung von Listview und Listview enthält Bilder (wenn List Laden enthält Standardbild und Download-Button), Text. Wenn der Download abgeschlossen ist, muss ich das Image aktualisieren und List.setSelectionFromTop (index, top) hinzufügen, um die Listenansicht zu aktualisieren. – Nisha

Antwort

0

Versuchen Sie, das Datenmodell/Datenquelle mit der Listenansicht view.setTag(dataModel) in getView Methode Ihrer Adapterklasse zu markieren.

0

Warum nicht RecyclerView anstelle von ListView ausprobieren und Fresco Image Library verwenden?

+0

Willkommen bei Stack Overflow! Dies gibt keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlasse einen Kommentar unter seinem Beitrag - du kannst deine eigenen Beiträge kommentieren und sobald du [verdienen] (http://meta.stackoverflow.com/q/146472/169503) ausreichend [ Reputation] (http://stackoverflow.com/help/whats-reputation) können Sie [comment] (http://stackoverflow.com/help/privileges/comment) zu jedem Post schreiben. Wenn Sie eine verwandte, aber andere Frage haben, [stellen Sie eine neue Frage] (http://stackoverflow.com/questions/ask), die auf diese verweist, wenn es helfen wird, Kontext zur Verfügung zu stellen. – ddb