Hi All,
I am using Jdeveloper 12.2.1.
We have two programmatic View object (CountryView & StatesView). CountryView is having three fields countryname ,statename and countryid and StateView have statename and statetid. In CountryView have statename as Input LOV from StateView. Now when we click on StateName LOV from CountryView shows list of statenames. But after it shows list of values am trying to click the sorting order icon to make it in ascending order. when I do this it throws ADF error.
For Creating the rows in StateView I am overriding the StatesViewImpl methods. May be that is reason got this error. But don't know the reason why it's occurring.

My StudentViewImpl Codes:
public class StatesViewImpl extends ViewObjectImpl {
List\<StateDetails> listvalue;//=new List\<String>();
/\*\*
\* This is the default constructor (do not remove).
\*/
public StatesViewImpl() {
}
/\*\*
\* executeQueryForCollection - for custom java data source support.
\*/
@Override
protected void executeQueryForCollection(Object qc, Object\[\] params, int noUserParams) {
Test test=new Test();
listvalue=test.myList();
setFetchPos(qc, 0);
super.executeQueryForCollection(qc, params, noUserParams);
}
/\*\*
\* hasNextForCollection - for custom java data source support.
\*/
@Override
protected boolean hasNextForCollection(Object qc) {
// boolean bRet = super.hasNextForCollection(qc);
// return bRet;
return getFetchPos(qc) \< listvalue.size();
}
/\*\*
\* createRowFromResultSet - for custom java data source support.
\*/
@Override
protected ViewRowImpl createRowFromResultSet(Object qc, ResultSet resultSet) {
// ViewRowImpl value = super.createRowFromResultSet(qc, resultSet);
// return value;
int pos = getFetchPos(qc);
StatesViewRowImpl newRow = (StatesViewRowImpl) createNewRowForCollection(qc);
newRow.setStateId(listvalue.get(pos).getStateid());
newRow.setStateName(listvalue.get(pos).getStatename());
setFetchPos(qc, pos + 1);
return newRow;
}
/\*\*
\* getQueryHitCount - for custom java data source support.
\*/
@Override
public long getQueryHitCount(ViewRowSetImpl viewRowSet) {
long value = super.getQueryHitCount(viewRowSet);
return value;
}
/\*\*
\* getCappedQueryHitCount - for custom java data source support.
\*/
@Override
public long getCappedQueryHitCount(ViewRowSetImpl viewRowSet, Row\[\] masterRows, long oldCap, long cap) {
long value = super.getCappedQueryHitCount(viewRowSet, masterRows, oldCap, cap);
return value;
}
private void setFetchPos(Object rowset, int pos) {
if (pos == listvalue.size()) {
setFetchCompleteForCollection(rowset, true);
}
setUserDataForCollection(rowset, new Integer(pos));
}
private int getFetchPos(Object rowset) {
int value = ((Integer) getUserDataForCollection(rowset)).intValue();
return value;
}
}
Test.Java Codes:
public class Test {
public List<StateDetails> myList() {
List\<StateDetails> completeList=new ArrayList\<StateDetails>();
StateDetails statdetails1=new StateDetails();
StateDetails statdetails2=new StateDetails();
StateDetails statdetails3=new StateDetails();
StateDetails statdetails4=new StateDetails();
statdetails1.setStateid("1");
statdetails1.setStatename("NewYork");
statdetails2.setStateid("2");
statdetails2.setStatename("California");
statdetails3.setStateid("3");
statdetails3.setStatename("LosAngeles");
statdetails4.setStateid("4");
statdetails4.setStatename("NewJersey");
completeList.add(statdetails1);
completeList.add(statdetails2);
completeList.add(statdetails3);
completeList.add(statdetails4);
return completeList;
}
}
StateDetails.java Codes:
public class StateDetails {
String stateid;
String statename;
public void setStateid(String stateid) {
this.stateid = stateid;
}
public String getStateid() {
return stateid;
}
public void setStatename(String statename) {
this.statename = statename;
}
public String getStatename() {
return statename;
}
}
Thanks,
Madeshwarn