2017-01-30 34 views
0

我的Android項目中有一項活動圍繞組消息傳遞。消息包含在ListView中,每行都有一個類似的按鈕。當按下類似按鈕時,總喜歡數量的標籤增加1(如果未點擊則減去一個)。但是,如果您在鍵盤打開時喜歡消息,然後按下後退按鈕,則鍵盤將關閉,最近喜歡/不喜歡的消息將恢復爲之前的計數。有什麼我可以添加到TextView,以防止它做到這一點?或者,也許我可以做些什麼來onBackButtonPressed()?謝謝你的幫助。當鍵盤打開時按下後退按鈕時,android中的TextView會恢復到以前的值

這是我改變likeCount文本代碼:

class MessageInfo { 
    public String messageID; 
    public String messageContent; 
    public String messageLikes; 
    public String senderID; 
} 

class ViewHolder { 

    public TextView messageContent = null; 
    public TextView messageLikeCount = null; 
    public Button likeButton = null; 
    public String messageLikes = null; 
    public String messageID = null; 


    public String messageSendTime; 
    public String senderID; 

    final CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
      getApplicationContext(), 
      keys.getIdPool(), // Identity Pool ID 
      Regions.US_EAST_1 // Region 
    ); 

    public AmazonDynamoDBClient dynamoDb = Region.getRegion(Regions.US_EAST_1) 
      .createClient(
        AmazonDynamoDBClient.class, 
        credentialsProvider, 
        new ClientConfiguration() 
      ); 

    ViewHolder(View row) { 
     messageContent = (TextView)row.findViewById(R.id.messageText); 
     messageLikeCount = (TextView)row.findViewById(R.id.likeCountText); 
     likeButton = (Button)row.findViewById(R.id.likeBtn); 

     likeButton.setTypeface(fontAwesome); 
    } 

    void populateFrom(final MessageInfo message) { 

     Log.e("MESSAGE2", "The message is " + message.messageContent); 

     messageContent.setText(message.messageContent); 
     messageID = message.messageID; 
     messageLikes = message.messageLikes; 

     int likeCount = 0; 

     if (messageLikes == null) { 
      messageLikes = ""; 
     } 

     Log.e("MessageLikes", "Mesage likes is " + messageLikes); 

     if (messageLikes.contains(userInfo.getProfId())) { 
      likeButton.setText(getString(R.string.icon_heart_closed)); 
      likeButton.setTextColor(getResources().getColor(R.color.colorHeart)); 
     } 

     for (int i = 0; i < messageLikes.length(); i++) { 

      if (messageLikes.charAt(i) == ',') { 

       likeCount += 1; 

      } 

     } // end for loop to get number of likes 


     messageLikeCount.setText(String.valueOf(likeCount)); 




     likeButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Log.e("Clicked", "Like button clicked"); 

       likeButton.setText(getString(R.string.icon_heart_closed)); 
       likeButton.setTextColor(getResources().getColor(R.color.colorHeart)); 

       int newLikeCount = Integer.parseInt(messageLikeCount.getText().toString()) + 1; 
       messageLikeCount.setText(String.valueOf(newLikeCount)); 

      } 
     }); 

    } 

} 

class MessageAdapter extends ArrayAdapter<MessageInfo> { 
    MessageAdapter() { 
     super(SingleGroupActivity.this, android.R.layout.simple_list_item_1, messageArr); 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder messageViewHolder; 

     Log.e("MESSAGE", "The message is " + messageArr.get(position).messageContent); 

     if (convertView == null) { 
      LayoutInflater inflater = getLayoutInflater(); 
      convertView = inflater.inflate(R.layout.message_row_layout, null); 

      messageViewHolder = new ViewHolder(convertView); 
      convertView.setTag(messageViewHolder); 
     } else { 

      messageViewHolder = (ViewHolder)convertView.getTag(); 
     } 

     if (messageArr.size() > 0) { 
      MessageInfo tempMessage = messageArr.get(position); 
      messageViewHolder.populateFrom(tempMessage); 
     } 


     return (convertView); 
    } 

} 
+1

你敲擊時試圖關閉鍵盤在像按鈕? – Mohamed

+0

我不認爲建議以編程方式關閉鍵盤。用戶在鍵入完畢後應關閉鍵盤。 –

+0

@ hermt2你可以在哪裏更新代碼嗎? –

回答

0

您可以隱藏鍵盤,當用戶敲擊像這樣的代碼鍵:

public static void hideKeypad(Activity context) { 
    View view = context.getCurrentFocus(); 
    if (view != null) { 
     InputMethodManager imm = 
     (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); 
     imm.hideSoftInputFromWindow(view.getWindowToken(), 0); 
    } 
} 
+0

我將此代碼添加到代碼中,現在只要我喜歡消息,鍵盤就會關閉,並且likeCount文本仍會恢復爲以前的值。所以它看起來像是關閉了鍵盤的文字字段值。 – hermt2

+0

好的,你可以顯示完整的代碼嗎? – Mohamed

+0

是的,我添加了我的列表視圖的所有代碼 – hermt2

相關問題