0

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
OneCricketeer
  • 151,199
  • 17
  • 111
  • 216
AndyJJ
  • 63
  • 1
  • 7
  • Possible duplicate of [What is a NullPointerException, and how do I fix it?](https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) – KeLiuyue Nov 09 '17 at 02:41
  • check rootview and listViewMessage one of this may be null – Nazim ch Nov 09 '17 at 04:52

3 Answers3

1

just get it like this

TextView tv=adapterView.getSelectedView().findViewById(R.id.my_tv);
himel
  • 460
  • 5
  • 13
1

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");
}
});
Muhammad Saad Rafique
  • 3,030
  • 1
  • 11
  • 21
0

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
        }
});
KeLiuyue
  • 7,831
  • 4
  • 23
  • 39