내 활동 중 하나가 각 행의 사용자 지정 숫자 선택기와 함께 목록보기를 필요로합니다. here과 같이 번호 선택 도구를 만들었습니다. 그러나 버튼을 클릭하면 카운터가 증가하거나 감소하지 않습니다.사용자 지정 NumberPicker 단추 .onClickListener
다음은 내 사용자 ListView
어댑터에서 발견 된 코드입니다.
public class MaterialListViewAdapter extends BaseAdapter
{
ViewHolder holder;
int counter = 0;
private ArrayList<MaterialClass> data;
public static LayoutInflater inflater = null;
public static Dialog dialog;
String materialName;
public MaterialListViewAdapter(Context applicationContext,
int materialdialogcontent, ArrayList<MaterialClass> materials)
{
this.data = materials;
inflater = (LayoutInflater)applicationContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount()
{
return data.size();
}
@Override
public Object getItem(int position)
{
return position;
}
@Override
public long getItemId(int position)
{
return position;
}
@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.sub.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;
}
private class ViewHolder
{
TextView txt;
Button add;
Button sub;
TextView num;
//NumberPicker pk;
}
}
무슨 일이 일어나고 있는지 디버깅을 시도하면 카운터가 '0'으로 초기화되지 않습니다.
나는 그러나 내가 마지막으로 카운터를 설정해야합니다 그렇게하기 위해,getView()
방법으로 카운터를 초기화 시도하고 또 다른 오류가
The final local variable counter cannot be assigned, since it is defined in an enclosing type.
어떤 제안 말을 나타?
추가 코드를 업데이트 :
public class Material extends Activity
{
ArrayList<String> materialList;
ListView lv;
Button btnConfirm;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main_material);
lv = (ListView)findViewById(R.id.list);
btnConfirm = (Button)findViewById(R.id.btnConfirm);
materialList = new ArrayList<String>();
Intent i = getIntent();
materialList = i.getStringArrayListExtra("materialList");
if(materialList != null)
{
Toast t = Toast.makeText(getApplicationContext(), materialList.get(0).toString(), Toast.LENGTH_LONG);
t.show();
}
else
{
//FILL HERE LATER
}
ArrayList<MaterialClass> materials = new ArrayList<MaterialClass>();
for(String temp : materialList)
{
MaterialClass m = new MaterialClass();
m.setName(temp);
materials.add(m);
}
MaterialListViewAdapter adapter = new MaterialListViewAdapter(getApplicationContext(), R.layout.materialdialogcontent, materials);
lv.setAdapter(adapter);
}
}
ListView에 대해 onItemClickListener를 정의 했습니까? 그렇다면 버튼을 클릭하면 트리거되지 않습니다. – SKK
@Santhosh 아니요. 정의하지 않았습니다. 그것이 그대로 작동해야하지만 그렇지 않습니다. – ClaireG
@Santhosh 게시물을 편집했습니다. 그것이 ListView를 다루는 내 활동입니다. – ClaireG