Hi,
I've got a simple listview that displays two strings twin1 and twin2. Twin is defined as:
public class Twin {
    public Twin(String twin1, String twin2) {
        this.twin1 = twin1;
        this.twin2 = twin2;
    }
    public String getTwin1() {
        return twin1;
    }
    public void setTwin1(String twin1) {
        this.twin1 = twin1;
    }
    public String getTwin2() {
        return twin2;
    }
    public void setTwin2(String twin2) {
        this.twin2 = twin2;
    }
    private String twin1;
    private String twin2;
}
and ViewModel:
@PresentationModel
public class MainActivityViewModel {
    private static final String SELECTED_SOURCE_INDEX = "selectedSourceIndex";
    private List<Twin> twins;
    public MainActivityViewModel() {
        twins=Lists.newArrayList();
        twins.add(new Twin("John","James"));
        twins.add(new Twin("Jack","Joseph"));
        twins.add(new Twin("Jane","Jo"));
        twins.add(new Twin("James","Joe"));
    }
    public int getSelectedSourceIndex() {
        return selectedSourceIndex;
    }
    public void setSelectedSourceIndex(int selectedSourceIndex) {
        this.selectedSourceIndex = selectedSourceIndex;
        Log.d("mypp", "setSelectedSourceIndex CALLED: "+selectedSourceIndex);
    }
    private int selectedSourceIndex;
    @ItemPresentationModel(value= TwinItemPresentationModel.class)
    public List<Twin> getDynamicTwins()
    {
        Log.d("mypp", "getDynamicStrings CALLED");
        return twins;//SampleStrings.getSample();
    }
    public void onItemSelected(ItemClickEvent event) {
        Log.d("mypp", "onItemSelected CALLED: "+event.getPosition());
        //setDynamicStrings(getDynamicStrings().get(event.getPosition()));
    }
    public void setDynamicTwins(List<Twin> twins) {
        this.twins = twins;
    }
}
TwinItemPresentationModel:
public class TwinItemPresentationModel implements ItemPresentationModel<Twin> {
    public Twin getTwin() {return twin;}
    public void setTwin(Twin twin) { this.twin = twin;}
    private Twin twin;
    @Override
    public void updateData(Twin twin, ItemContext itemContext) {  this.twin = twin; }
}
row_item_layout:
<?xml version="1.0" encoding="utf-8"?>
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:background="@drawable/my_list_selector_background">
    <EditText
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        bind:text="${twin1}"
        android:id="@+id/edtComment"
        android:layout_weight="1" />
    <TextView
        android:id="@+id/txtDesc"
        bind:text="{twin2}"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_weight="1" />
</LinearLayout>
and the main xml:
<?xml version="1.0" encoding="utf-8"?>
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    <ListView
        bind:itemLayout="@layout/row_item_layout"
        bind:source="{twins}"
        bind:selectedItemPosition="${selectedSourceIndex}"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content" />
</RelativeLayout>
but, when I run it, I get error:
source: No such dataSet property 'info.androidhive.tabsswipe.ViewModel.MainActivityViewModel.twins'
any ideas? Also, bind:selectedItemPosition="${selectedSourceIndex}" doesn't work? How do I know what is the value of index?
regards