सारांशएंड्रॉयड - छवियों के लिए दृश्य जोड़ना अपडेट नहीं करता - onClick
एक उपयोगकर्ता RecyclerView
आइटम पर क्लिक करता है, मैं जानकारी है कि एक BAAS में जमा किया गया है कि छवि के लिए टैग जोड़ने के लिए चाहते हैं [सशिडो] (एक्स समन्वय, वाई समन्वय और टैग नाम)। लेकिन, मेरी समस्या यह है कि प्रतिभा स्थिति नहीं मिल रही है। जब छवि पर क्लिक किया गया है तो मैं एक टोस्ट बना देता हूं, यह दृश्य के अनुरूप सही स्थिति दिखाता है। (शुरुआत के लिए शून्य, इतने पर और आगे)
लेकिन जब उपयोगकर्ता सूची में किसी अन्य आइटम पर क्लिक करता है तो स्थिति को अपडेट करने के लिए, ताकि टैग सशिडो में सरणी में स्थिति से मेल खाते हों, मिलान करें RecyclerView
में स्थिति, क्योंकि फिलहाल सशिडो वर्ग की पहली पंक्ति उस पंक्ति के टैग के साथ सभी छवियों को पॉप्युलेट कर रही है।
मेरे धारणा पास करने के लिए getLayoutPosition()
का उपयोग कर इतनी है कि जब objects.get(position)
सरणी कहा जाता है, यह Sashido वर्ग के लिए एक ही स्थिति मिलेगा getTagInformation()
विधि के लिए स्थिति थी, लेकिन ऐसा नहीं है। मुझे लगता है कि उपयोगकर्ता ने किसी नए आइटम पर क्लिक करने के बाद एडाप्टर को सही ढंग से अपडेट नहीं किया जाना चाहिए।
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();
}
}
});
}
मैं भी है टी रीड
public void getTagInformation(String imageid) {
ParseQuery query = ParseQuery.getQuery("FashionFeed");
query.WhereEqualTo("objectId", imageId);
....
}
imageId
विधि में पारित कर दिया साथ और मुझे भी मैन्युअल रूप से एक objectId
में प्रवेश कि मिलान कर देंगे करने के बावजूद, केवल टैग है कि उस objectId
के हैं उत्पादन होगा। ऐसा लगता है कि यह क्वेरी सभी वस्तुओं के माध्यम से जा रही है। बस उस ऑब्जेक्ट से टैग जानकारी प्राप्त करना और फिर उन छवियों के साथ सभी छवियों को सेट करना।
यदि आपको मुझे कोड प्रदान करने की आवश्यकता है, तो मैं खुश हूं।
मैंने यह किया, अगर मैं डेटाबेस से मैन्युअल रूप से ऑब्जेक्ट डालता हूं, तो सही टैग दिखाए जाते हैं लेकिन फिर भी सभी छवियों के लिए दिखाई देते हैं। तो मुझे विश्वास नहीं है कि यह सवाल है। मुझे इसकी सारी जानकारी मिल रही है, लेकिन टैग के केवल एक सेट के लिए। निश्चित रूप से यह 'getTagInformation()' विधि के बाहर होना चाहिए। – BIW