2017-01-30 33 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

相关问题