Tóm tắtAndroid - Thêm xem để hình ảnh không cập nhật - onClick
Khi người dùng nhấp vào RecyclerView
mục, tôi muốn thêm thẻ vào hình ảnh đó từ những thông tin đã được lưu trữ trong một Baas [Sashido] (tọa độ X, toạ độ Y và tên thẻ). Nhưng, vấn đề tôi đang gặp phải là không nhận được vị trí. Tôi tạo ra một bánh mì nướng khi hình ảnh đã được nhấp, nó cho thấy vị trí chính xác tương ứng với chính khung nhìn đó. (0 cho số đầu, vv ..)
Nhưng cách cập nhật vị trí khi người dùng bấm vào một mục khác trong danh sách, sao cho các thẻ tương ứng với vị trí trong mảng trong Sashido, khớp với vị trí trong RecyclerView
, bởi vì tại thời điểm hàng đầu tiên trong lớp Sashido là phổ biến tất cả các hình ảnh với các thẻ của hàng đó.
Giả định của tôi là chuyển vị trí đến phương thức getTagInformation()
bằng cách sử dụng getLayoutPosition()
để khi được gọi là objects.get(position)
mảng, nó sẽ có cùng vị trí cho lớp Sashido nhưng không phải. Tôi cảm thấy bộ điều hợp không được cập nhật chính xác sau khi người dùng đã nhấp vào một mục mới.
onBindViewHolder:
@Override
public void onBindViewHolder(RecyclerViewHolderPreviousPosts holder, int position) {
holder.bind(previousPostsList.get(position), listener);
}
onBind:
void bind(final PreviousPostsDataModel model, final OnItemClickListener listener) { ...
uploadedImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (count == 0) {
imageid = model.getImageId();
Toast.makeText(App.getContext(), "Image ID: " + imageid, Toast.LENGTH_SHORT).show();
Toast.makeText(App.getContext(), "Position: " + getAdapterPosition(), Toast.LENGTH_SHORT).show();
getTagInformation(getLayoutPosition());
} else {
Log.e("qwert", "" + imageid);
imageContainer.removeAllViews();
imageContainer.addView(uploadedImage);
count = 0;
}
}
});
... }
getTagInformation:
private void getTagInformation(final int position) {
ParseQuery<ParseObject> query = ParseQuery.getQuery("FashionFeed");
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objects, ParseException e) {
if (e == null) {
Toast.makeText(context, "" + position, Toast.LENGTH_SHORT).show();
JSONArray tagNamesArray = objects.get(position).getJSONArray("tagName");
JSONArray posXArray = objects.get(position).getJSONArray("tagPointX");
JSONArray posYArray = objects.get(position).getJSONArray("tagPointY");
for (int i = 0; i < tagNamesArray.length(); i++) {
for (int t = 0; t < tagNamesArray.length(); t++) {
tagNames.add(tagNamesArray.optString(t));
tagXPositions.add(posXArray.optString(t));
tagYPositions.add(posYArray.optString(t));
}
for (int o = 0; o < tagNamesArray.length(); o++) {
tag = new TextView(App.getContext());
tag.setX(Float.parseFloat(tagXPositions.get(o)));
tag.setY(Float.parseFloat(tagYPositions.get(o)));
tag.setText(tagNames.get(o));
tag.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
tag.setMaxLines(1);
tag.setTextSize(11);
tag.setClickable(true);
tag.setHintTextColor(Color.WHITE);
tag.setTextColor(Color.WHITE);
tag.setBackgroundResource(R.drawable.tags_rounded_corners);
imageContainer.addView(tag);
count = 1;
}
}
} else {
Toast.makeText(context, "" + e.getMessage(), Toast.LENGTH_LONG).show();
}
}
});
}
Tôi cũng có t Ried
public void getTagInformation(String imageid) {
ParseQuery query = ParseQuery.getQuery("FashionFeed");
query.WhereEqualTo("objectId", imageId);
....
}
với imageId
truyền vào phương pháp và với tôi cũng tự nhập một objectId
rằng sẽ phù hợp, nó sẽ vẫn chỉ sản xuất các thẻ thuộc về objectId
đó. nó dường như không phải là truy vấn này đang trải qua tất cả các đối tượng. Chỉ cần lấy thông tin thẻ từ một đối tượng đó và sau đó đặt tất cả các hình ảnh với các thẻ đó.
nếu bạn cần tôi cung cấp mã nữa, tôi rất vui.
Tôi đã làm điều này, nếu tôi đặt thủ công đối tượngId từ cơ sở dữ liệu, các thẻ chính xác sẽ hiển thị nhưng vẫn hiển thị cho tất cả các hình ảnh. Vì vậy, tôi không tin đó là truy vấn. nó nhận được tất cả thông tin tôi cần, nhưng chỉ cho một bộ thẻ. chắc chắn nó phải nằm ngoài phương thức 'getTagInformation()'. – BIW