La vista de lista de Android setOnItemClickListener no funciona
Quiero ocultar el campo de edición de texto y botón inicialmente en la vista de lista y mostrar que se edita el texto y el botón para una materia prima particular en la vista de lista cuando se hace clic en esa materia prima. Por lo tanto, traté de establecer la altura a 0 en el formato XML y luego la configuré. a algún otro valor cuando el usuario hace clic en un formato sin procesar, pero no funciona, creo que el evento de clic en la vista de lista no funciona. En el diseño de Android que tengo vista de lista hay vista de Imagen como un botón, edición de campo de texto y vista de lista también. Como sigue
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainPortal" >
<ListView
android:id="@+id/employeeListView"
android:layout_width="650dp"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="25dp"
android:clickable="true">
</ListView>
<EditText
android:id="@+id/empPin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/iv_start_journey_btn"
android:layout_marginBottom="56dp"
android:layout_marginRight="17dp"
android:layout_toLeftOf="@+id/employeeListView"
android:ems="10"
android:inputType="number"
android:hint="@string/add_emp_pin_hint" >
<requestFocus />
</EditText>
<ImageView
android:id="@+id/iv_start_journey_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/employeeListView"
android:layout_alignRight="@+id/empPin"
android:layout_marginBottom="84dp"
android:onClick="startJourney"
android:src="@drawable/start" />
</RelativeLayout>
He utilizado el siguiente diseño personalizado para la vista de lista
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/emp_avatar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="18dp"
android:adjustViewBounds="true"
android:maxHeight="80dp"
android:maxWidth="80dp"
android:src="@drawable/person" />
<TextView
android:id="@+id/emp_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/emp_avatar"
android:layout_toRightOf="@+id/emp_avatar"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/empPin"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_alignBottom="@+id/emp_avatar"
android:layout_alignRight="@+id/emp_number"
android:layout_toRightOf="@+id/emp_avatar"
android:ems="10"
android:inputType="number" >
<requestFocus />
</EditText>
<Button
android:id="@+id/empAdd"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_alignBaseline="@+id/empPin"
android:layout_alignBottom="@+id/empPin"
android:layout_marginLeft="20dp"
android:layout_toRightOf="@+id/empPin"
android:text="@string/emp_add_btn" />
Aquí publico el código de Activity.java.
public class MainPortal extends Activity {
private List<Employee> employees = new ArrayList<Employee>();
EditText et;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_portal);
populateEmployeeList();
//populsteListView();
ListView list = (ListView) findViewById(R.id.employeeListView);
ArrayAdapter<Employee> adapter = new MylistAdapter();
list = (ListView) findViewById(R.id.employeeListView);
list.setAdapter(adapter);
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
//I ADDED ON CLICK IMPLEMENTATION HERE, BUT THIS IS NOT WORKING
Toast.makeText(getApplicationContext(), "CLICKED", Toast.LENGTH_SHORT).show();
}
});
private void populateEmployeeList() {
...
}
private class MylistAdapter extends ArrayAdapter<Employee>{
public MylistAdapter(){
super(MainPortal.this,R.layout.item_view,employees);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View itemView = convertView;
if(itemView==null){
itemView = getLayoutInflater().inflate(R.layout.item_view, parent,false);
}
Employee currentEmployee = employees.get(position);
//Avatar
ImageView imageView = (ImageView) itemView.findViewById(R.id.emp_avatar);
imageView.setImageResource(currentEmployee.getAvatarId());
//Employee number
TextView emp_id = (TextView) itemView.findViewById(R.id.emp_number);
emp_id.setText(currentEmployee.getId());
et = (EditText) itemView.findViewById(R.id.empPin);
return itemView;
}
}
}
Arriba he publicado algunos códigos que me parecen importantes. ¿Alguien puede ayudarme a hacer esta tarea? Gracias por adelantado.