Reputation: 73
I want to change text in textview which is in a listview on click
listViewMessage = (ListView) rootview.findViewById(R.id.listView);
listViewMessage.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
txtViewMess = (TextView) listViewMessage.getChildAt(position).findViewById(R.id.textViewMessage); //error
txtViewMess.setText("Paid");
}
});
Code worked for a couple of textview, but some turned to
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
Upvotes: 0
Views: 271
Reputation: 3189
You are using wrong view to initialize your text view:
listViewMessage = (ListView) rootview.findViewById(R.id.listView);
listViewMessage.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, final int
position, long id) {
txtViewMess = (TextView)
view.getChildAt(position).findViewById(R.id.textViewMessage); //error
txtViewMess.setText("Paid");
}
});
Upvotes: 1
Reputation: 510
just get it like this
TextView tv=adapterView.getSelectedView().findViewById(R.id.my_tv);
Upvotes: 1
Reputation: 8237
You can use callback
in your code .
YourAdapter
@Override
public View getView(final int i, View view, ViewGroup viewGroup) {
ViewHolder viewHolder = null;
...
viewHolder.mTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mTextClickListener.onTextClick(i);
}
});
return view;
}
/**
* text click
*/
public interface onItemTextClickListener {
void onTextClick(int i);
}
private onItemTextClickListener mTextClickListener;
public void setOnItemTextClickListener(onItemTextClickListener mTextClickListener) {
this.mTextClickListener = mTextClickListener;
}
class ViewHolder {
TextView mTextView;
}
Call method
mAdapter.setOnItemTextClickListener(new onItemTextClickListener() {
@Override
public void onTextClick(int i) {
// do something here
}
});
Upvotes: 0