Android: vista de lista personalizada, vista de tabla en el adaptador

Creé una vista de tabla en el adaptador de vista de lista mediante programación. Para eso primero creé un diseño de Adaptador como:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/black"
    android:stretchColumns="*"
    android:id="@+id/tablelayout" >
</ableLayout>

Entonces lo que he hecho en el adaptador es:

public class DemoAdapter extends ArrayAdapter<String> {
    //Global Variable declaration
    Context myContext;
    String[] key, value, loop;

    public DemoAdapter(Context context, String[] key, String[] value, String[] loop){
        super(context, R.layout.demo_screen_adapter, loop);
        this.myContext = context;
        this.key = key;
        this.value = value;
        this.loop = loop;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent){
        View row = convertView;
        if (row == null){
            // get reference to the activity
            LayoutInflater inflater = ((Activity) myContext).getLayoutInflater();
            // Inflate the custom text which will replace the default text view
            //list_item is a simple linear layout which contain textView1 in it. 
            row = inflater.inflate(R.layout.demo_screen_adapter, parent, false);
        }

        TableLayout tableLayout = (TableLayout) row.findViewById(R.id.tablelayout);
        for(int i=0; i<5; i++){
            TableRow tableRow = new TableRow(myContext);
            tableRow.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT));

            TextView tvKey = new TextView(myContext);
            tvKey.setText(key[(position*5)+i]);
            tvKey.setTextColor(Color.WHITE);
            tvKey.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
            tableRow.addView(tvKey);

            TextView tvValue = new TextView(myContext);
            tvValue.setText(value[(position*5)+i]);
            tvValue.setTextColor(Color.WHITE);
            tvValue.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
            tableRow.addView(tvValue);
            tableLayout.addView(tableRow, new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.MATCH_PARENT));
        }
        return row;
    }
}

Esto está funcionando bien. En cada elemento de mi lista hay una vista de tabla que contiene alrededor de dos columnas y cinco filas.

Ahora elproblema es:

Quiero obtener los valores perticulares al hacer clic en el elemento de la lista. No puedo hacerlo. Lo que probé como:

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
    Toast.makeText(this, ""+(String) arg0.getItemAtPosition(position), Toast.LENGTH_LONG).show();
}

Pero muestra la posición en la que hago clic.

¿Qué debo hacer para eso, por favor guíame?

Respuestas a la pregunta(1)

Su respuesta a la pregunta