У меня есть активность в моем проекте Android, который вращается вокруг группового сообщения. Сообщения содержатся в ListView, и каждая строка имеет подобную кнопку. Когда нажата подобная кнопка, метка с общим количеством симпатий увеличивается на единицу (и вычитается, как если бы она была отброшена). Однако, когда вам нравится сообщение, когда клавиатура открыта, а затем нажмите кнопку «Назад», клавиатура закроется, а последнее понравившееся/неактивное сообщение вернется к предыдущему, как счет. Есть ли что-нибудь, что я могу добавить в TextView, чтобы это не делалось? Или что-то я могу сделать с onBackButtonPressed()
? Спасибо за вашу помощь.TextView в android возвращается к предыдущему значению при нажатии кнопки «Назад» при открытой клавиатуре
Это код, где я могу изменить текст 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);
}
}
Вы пытались закрыть клавиатуру при касании на подобной кнопке? – Mohamed
Я не думаю, что рекомендуется программно закрыть клавиатуру. Пользователь должен закрыть клавиатуру, когда они будут печататься. –
@ hermt2 можете ли вы разместить код, в котором вы обновляете счет? –