尝试在 listViewItem 中捕获 onClickListener 时出现 NPE
NPE when trying catch onClickListener in listViewItem
我有带有项目的 listView,每个项目都有一些按钮和 textView,我想捕获对当前 textView 或当前 listItem 上的按钮的点击,并对它们进行一些更改。
为此,我在 cursorAdapter:
中使用 getView 方法
@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
View rootView = super.getView(position, convertView, parent);
mCounter = (TextView) rootView.findViewById(R.id.textView_counter);
mCounter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int counter = Integer.getInteger(mCounter.getText().toString());
mCounter.setText(String.valueOf(counter + 1));
}
});
return rootView;
}
但是当我尝试做 mCounter.getText().toString()
我得到 NPE...
很高兴有任何解决此问题的想法:)
@Override
public void onClick(View v) {
TextView tv = (TextView)v;
int counter = Integer.getInteger(tv.getText().toString());
tv.setText(String.valueOf(counter + 1));
}
确保 v
始终是 TextView
(在您的情况下是)或准备用 ClassCastException
.
捕获它
更新
好的,更改以下行
int counter = Integer.getInteger(tv.getText().toString());
进入
int counter = Integer.parseInt(tv.getText().toString());
更新 2
确保 TextView
中的值仅为 number 或准备好用 NumberFormatException
.
捕获它
我有带有项目的 listView,每个项目都有一些按钮和 textView,我想捕获对当前 textView 或当前 listItem 上的按钮的点击,并对它们进行一些更改。 为此,我在 cursorAdapter:
中使用 getView 方法@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
View rootView = super.getView(position, convertView, parent);
mCounter = (TextView) rootView.findViewById(R.id.textView_counter);
mCounter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int counter = Integer.getInteger(mCounter.getText().toString());
mCounter.setText(String.valueOf(counter + 1));
}
});
return rootView;
}
但是当我尝试做 mCounter.getText().toString()
我得到 NPE...
很高兴有任何解决此问题的想法:)
@Override
public void onClick(View v) {
TextView tv = (TextView)v;
int counter = Integer.getInteger(tv.getText().toString());
tv.setText(String.valueOf(counter + 1));
}
确保 v
始终是 TextView
(在您的情况下是)或准备用 ClassCastException
.
更新
好的,更改以下行
int counter = Integer.getInteger(tv.getText().toString());
进入
int counter = Integer.parseInt(tv.getText().toString());
更新 2
确保 TextView
中的值仅为 number 或准备好用 NumberFormatException
.