현재 사용자 지정 NumberPickers를 사용하여 ListView
이 필요한 작업을하고 있습니다. 번호 선택 도구는 here으로 제안했습니다.사용자 지정 NumberPickers가있는 ListView - 증분 된 숫자가 표시되지 않습니다.
내가 직면하고있는 문제는 상당히 실망 스럽습니다. 숫자 선택 도구의 + 버튼을 클릭하면 텍스트보기는 0을 계속 표시합니다. 나는 모두 these suggestions을 시도했지만 아무 것도 변경되지 않았습니다.
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View vi = convertView;
//ViewHolder holder = new ViewHolder();
if(vi == null)
{
holder = new ViewHolder();
vi = inflater.inflate(R.layout.materialdialogcontent, null);
//Initialize Buttons and TextViews.
holder.num.setText("0");
holder.add.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
counter++;
holder.num.setText("" + counter);
}
});
holder.sub.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
counter--;
holder.num.setText("" + counter);
}
});
//holder.pk = (NumberPicker)vi.findViewById(R.id.npMaterialAmount);
vi.setTag(holder);
}
else
{
holder = (ViewHolder)vi.getTag();
}
holder.txt.setText(data.get(position).getName());
//holder.pk.setMaxValue(20);
//holder.pk.setMinValue(0);
return vi;
}
public static class ViewHolder
{
TextView txt;
Button add;
Button sub;
TextView num;
//NumberPicker pk;
}
위의 코드는 내 ListView
어댑터에서 발견된다.
내가 위의 코드, 카운터는 증가를 디버깅 할 때 디버거 변수가 TextView
의 텍스트가 실제로 카운터에 존재하는 숫자로 설정되고 있음을 보여줍니다
다음
내가 이미 시도 것입니다 그러나 표시된 숫자는 여전히 0입니다.OnItemClickListener()
을 ListView
으로 설정하려고 시도했지만 아무 일도 일어나지 않습니다. 그런 다음 ListView Adapter 클래스에서 Button
클릭 청취자를 제거하고 ListView의 onItemClickListener()
안에 배치했습니다. 그러나 디버깅 할 때 Button
클릭 수신기는 디버거에서 건너 뜁니다.
다른 의견이 있으십니까?
가능한 모든 도움에 감사드립니다.
업데이트 :
holder.add.setTag(position);
holder.add.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
int position = (Integer)v.getTag();
int temp = numPickerValues.get(position);
temp += 1;
numPickerValues.set(position, temp);
notifyDataSetChanged();
}
});
holder.num.setText(String.valueOf(numPickerValues.get(position)));
return convertView;
당신은 아마 잘못된 전망을 업데이트 : 일부 데이터 구조에서 현재 값을 저장하고 설정/그 목록에서 현재 값을 업데이트하는 것 그 행 번호 선택기를 처리하는 올바른 방법 'getView()'의 외부에서도 (그 카운터 변수의 사용법도 올바르지 않습니다). 어쨌든 원하는 것을 할 수있는 방법이 아니기 때문에 각 행에서 번호 선택 도구의 값을 잡고 업데이트해야합니다. 이 작은 요점을 한번보세요 https://gist.github.com/luksprog/6208731 – Luksprog
@Luksprog 좋은 생각입니다. 나는 그것을 시도했지만 값은 변하지 않았다. 대신 ListList 내 행 수가 무작위이기 때문에 ArrayList를 사용해야했습니다. 그래도 여전히 작동하지 않습니다. 한번보세요. 위의 게시물에 코드를 삽입했습니다. – ClaireG
홀더는 하나의 목록 뷰 행 안에 모든 구성 요소를 보유하는 클래스입니다. – ClaireG