键盘打开时,listview更改为默认值

时间:2016-07-25 12:21:01

标签: android image listview chat

列表视图中,我有图像,文本和图像包含默认图像,当列表加载下载完成时,每件事情都可以正常工作,但是当键盘打开时,下载的图像会更改为默认图像。     公共类ChatScreen扩展了Activity实现的OnClickListener     {

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

2 个答案:

答案 0 :(得分:0)

尝试使用适配器类的getView方法中的列表视图view.setTag(dataModel)标记数据模型/数据源。

答案 1 :(得分:0)

为什么不尝试使用RecyclerView而不是ListView并使用Fresco Image Library?