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
  • 179,855
  • 19
  • 132
  • 245
AndyJJ
  • 73
  • 1
  • 8
  • 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
  • 500
  • 5
  • 14
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,158
  • 1
  • 13
  • 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
  • 8,149
  • 4
  • 25
  • 42