You can achieve this in two ways :-
First is in listview's item layout add EditText and a Button and hide them. Now set onItemClickListener of listview in which hide textview and show editext and replace button.
Second is create a new layout with edit text and a button and set onItemClickListener for listview and when clicked on row you can easily inflate that layout into your listview's item layout.
Second Solution code:-
inflate.xml
<EditText
android:id="@+id/enter_txt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/btn_replace"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
*list_view_item.xml*
<TextView
android:id="@+id/my_txt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="ABCD"
/>
<RelativeLayout
android:id="@+id/rl_inflate"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
listview onItemClickListener
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
TextView txt_view = (TextView)view.findViewById(R.id.my_txt);
txt_view.setVisibility(View.GONE);
RelativeLayout rl_inflate = (RelativeLayout)view.findViewById(R.id.rl_inflate);
View child = getLayoutInflater().inflate(R.layout.inflate);
rl_inflate.addView(child);
Button my_btn = (Button)child.findViewById(R.id.btn_replace);
EditText enter_txt = (EditText)child.findViewById(R.id.enter_txt);
my_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
txt_view.setText(enter_txt.getText().toString());
txt_view.setVisibility(View.VISIBLE);
}
});
}
});