Просто моя проблема заключается в следующем.
Я реализую ExapndableListView, первая группа имеет дочерние элементы, которые имеют макет, состоящий из трех: TextView, ImageView, ImageView.
Теперь, когда нажимается дочерний элемент, я устанавливаю видимость одного из двух изображений с помощью v.findViewById(). SetVisibility() и его работоспособность, как я себе представлял.
Проблема заключается в том, что в списке больше 10 детей, система Android восстанавливает вид, используя последний скрытый вверху при прокрутке вниз, теперь, когда я нажимаю дочерний элемент «0», я переключаю изображение вида THAT только пока другие не изменились, до сих пор хорошо, но когда я прокручиваю вниз, и система андроидов перерабатывает представление, используя дочерний вид «0» в дочернем элементе позиции «11», он меняет текст, соответствующий дочернему элементу «11», как и должно быть, но представление, используемое для дочернего «11», представляет собой представление дочернего «0», таким образом, тот же самый образ, который был ранее переключен, появляется на вид ребенка «11», как если бы он был нажат, но это не было ! им делать это:Расширяемый просмотр списка Повторяющиеся виды
@Override
public View getChildView(final int parentPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
Log.d("status","parent : "+parentPosition + " child : " + childPosition + " View : "+convertView + " ViewGroup : "+parent);
int itemType = 25;
itemType = getChildType(parentPosition, childPosition);
String child_title = (String) getChild(parentPosition,childPosition);
if (convertView == null)
{
if (itemType == 0)
{
LayoutInflater inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.activities2_child_layout, parent, false);
} else if (itemType == 1) {
LayoutInflater inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.activities2_child2_layout, parent, false);
} else if (itemType == 2) {
LayoutInflater inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.activities2_child2_layout, parent, false);
}
}
if (itemType == 0)
//region parent 0 child handling
{
Log.d("Child", childPosition + " : " + child_title);
final TextView child_textview = (TextView) convertView.findViewById(R.id.activities2_child_txt);
final ImageView img_Likes = (ImageView) convertView.findViewById(R.id.activities2_img_like);
final ImageView img_Dislikes = (ImageView) convertView.findViewById(R.id.activities2_img_dislike);
child_textview.setText(child_title);
child_textview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (AAChildClicks[childPosition]) {
case 0:
AAChildClicks[childPosition]++;
img_Likes.setVisibility(View.VISIBLE);
//add to total
All_Likes.add(child_textview.getText().toString());
Log.d("Likes", "Likes + " + child_textview.getText().toString());
break;
case 1:
AAChildClicks[childPosition]++;
img_Likes.setVisibility(View.GONE);
img_Dislikes.setVisibility(View.VISIBLE);
String child = child_textview.getText().toString();
//remove from total
All_Likes.remove(child_textview.getText().toString());
Log.d("Likes", "Likes - " + child_textview.getText().toString());
//add to total
All_Dislikes.add(child_textview.getText().toString());
Log.d("Likes", "Dislikes + " + child_textview.getText().toString());
break;
case 2:
AAChildClicks[childPosition] = 0;
img_Likes.setVisibility(View.GONE);
img_Dislikes.setVisibility(View.GONE);
String child2 = child_textview.getText().toString();
//remove from total
All_Dislikes.remove(child_textview.getText().toString());
Log.d("Likes", "Dislikes - " + child_textview.getText().toString());
break;
}
}
});
}
//endregion
if (itemType == 1)
//region parent 1 child handling
{
TextView child_textview = (TextView) convertView.findViewById(R.id.activities2_child2_txt);
child_textview.setText(child_title);
}
//endregion
if (itemType == 2)
//region parent 2 child handling
{
TextView child_textview = (TextView) convertView.findViewById(R.id.activities2_child2_txt);
child_textview.setText(child_title);
}
//endregion
return convertView;
}
Как избежать такого дублирования/ошибка?!
Оставьте весь метод getChildView, пожалуйста. – NameSpace
@NameSpace Я только что скорректировал код для u –